X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=TESTPAT;h=09b57fc4e3b4aa05aed4ee8291cb07cc4c9e5a47;hb=955b92b07f71c449e9ff8f2b49b7e12408527cec;hp=37ed743ecbacef2d7639bdc6d916cf26ce704b92;hpb=9e4fd3263a84326963af543505f0c5a783eb2f70;p=elisp%2Fflim.git diff --git a/TESTPAT b/TESTPAT index 37ed743..09b57fc 100644 --- a/TESTPAT +++ b/TESTPAT @@ -2,20 +2,32 @@ ;-------- This sequece of HYPHEN-MINUS is 76 bytes long. -------------------- ;---------------------------------------------------------------------------- -; options: -;encode-sticked-comment-as-atom ; violate policy preventing structure -;ignore-75bytes-limit ; violate RFC2047 -;ignore-76bytes-limit ; violate RFC2047 -;permit-sticked-comment ; violate RFC2047 -;permit-sticked-special ; violate RFC2047 -;separate-sticked-comment ; violate policy preserving absence of space -;separate-sticked-special ; violate policy preserving absence of space -;zero-characters-encoded-word-hack ; violate common sense (very tricky) -;quoted-encoded-word ; violate character sequence semantics - -;;; test driver for FLAM (and FLIM) - -(defun decode-flam (src dsts &rest opts) +;;; options: +;;encode-sticked-comment-as-atom ; violate the policy preserving structures +;;ignore-75bytes-limit ; violate RFC2047 +;;ignore-76bytes-limit ; violate RFC2047 +;;permit-sticked-comment ; violate RFC2047 +;;permit-sticked-special ; violate RFC2047 +;;separate-sticked-comment ; violate the policy preserving absence of space +;;separate-sticked-special ; violate the policy preserving absence of space +;;zero-characters-encoded-word-hack ; violate common sense (very tricky) +;;quoted-encoded-word ; violate character sequence semantics +;;separate-sticked-tokens-for-fold ; violate the policy preserving absence of space +;;encode-long-ascii-string-for-fold ; violate the policy preserving US-ASCII string +;;divide-atom-for-fold ; violate tne policy preserving absence of space + +;;; test driver + +;;; FLIM or FLAM +'(progn +(require 'mime) +(require 'ew-line) + +(if (< max-specpdl-size 1000) + (setq max-specpdl-size 1000)) + +(defun decode-test (src dsts &rest opts) + (setq src (ew-crlf-to-lf src)) (setq eword-lexical-analyze-cache nil) (setq eword-decode-sticked-encoded-word (or (memq 'permit-sticked-comment opts) @@ -27,10 +39,11 @@ (goto-char (point-min)) (std11-narrow-to-header mail-header-separator) (std11-field-end) - (let ((result (buffer-substring (point-min) (point)))) + (let ((result (std11-unfold-string + (buffer-substring (point-min) (point))))) (if (member result dsts) t result)))) -(defun encode-flam (src dsts &rest opts) +(defun encode-test (src dsts &rest opts) (setq eword-lexical-analyze-cache nil) (setq eword-decode-sticked-encoded-word nil) (setq eword-decode-quoted-encoded-word nil) @@ -43,9 +56,34 @@ (std11-field-end) (let ((result (buffer-substring (point-min) (point)))) (if (member result dsts) t result)))) +) + +;;; EW +(progn +(require 'ew-dec) +(require 'ew-line) + +(defun decode-test (src dsts &rest opts) + (let ((ew-decode-quoted-encoded-word nil) + (ew-ignore-75bytes-limit (memq 'ignore-75bytes-limit opts)) + (ew-ignore-76bytes-limit (memq 'ignore-76bytes-limit opts)) + (ew-permit-sticked-comment (memq 'permit-sticked-comment opts)) + (ew-permit-sticked-special (memq 'permit-sticked-special opts))) + (string-match "\\`[^:]*:" src) + (let* ((field-name (substring src + (match-beginning 0) + (1- (match-end 0)))) + (field-body (substring src (match-end 0))) + (result (ew-crlf-unfold + (concat field-name ":" + (ew-decode-field field-name field-body))))) + (if (member result dsts) t result)))) + +(defun encode-test (src dsts &rest opts) + nil) +) -(setq decode-test 'decode-flam) -(setq encode-test 'encode-flam) +;;; (setq decode-succ-count 0) (setq decode-all-count 0) @@ -53,36 +91,41 @@ (if (stringp dsts) (setq dsts (list dsts))) (setq decode-all-count (1+ decode-all-count)) (let ((res (condition-case nil - (apply decode-test src dsts opts) + (apply 'decode-test src dsts opts) (error nil)))) (if (eq res t) - (setq decode-succ-count (1+ decode-succ-count)) - (insert (format "\n;fail;%S" res))) + (progn + (setq decode-succ-count (1+ decode-succ-count)) + (insert "\n'dsucc")) + (insert (format "\n%S\n'dfail" res))) res)) (setq encode-succ-count 0) (setq encode-all-count 0) (defun encode (src dsts &rest opts) (if (stringp dsts) (setq dsts (list dsts))) - (setq encode-all-count (1+ decode-all-count)) + (setq encode-all-count (1+ encode-all-count)) (let ((res (condition-case nil - (apply encode-test src dsts opts) + (apply 'encode-test src dsts opts) (error nil)))) (if (eq res t) - (setq encode-succ-count (1+ encode-succ-count)) - (insert (format "\n;fail;%S" res))) + (progn + (setq encode-succ-count (1+ encode-succ-count)) + (insert "\n'esucc")) + (insert (format "\n%S\n'efail" res))) res)) (defun report () (insert - (format "\n\"Decode: %d/%d Encode: %d/%d\"" + (format "\n\"Decode: %d/%d Encode: %d/%d Total: %d/%d\"" decode-succ-count decode-all-count - encode-succ-count encode-all-count))) + encode-succ-count encode-all-count + (+ decode-succ-count encode-succ-count) + (+ decode-all-count encode-all-count)))) -;;;start-test;;; +;;;start-test - -;; Section 1: Decoding examples from RFC2047 +;;; Section 1: Decoding examples from RFC2047 (decode "From: =?US-ASCII?Q?Keith_Moore?= " @@ -97,7 +140,7 @@ "CC: Andr.ANi Pirard ")*B (decode -"Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?= +"Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=\r =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=" "Subject: If you can read this you understand the example.") @@ -110,10 +153,9 @@ "From: Patrik F.ANdltstrNvm ")*B (decode -"From: Nathaniel Borenstein +"From: Nathaniel Borenstein \r (=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)" "From: Nathaniel Borenstein (.HNmNeNlNy NoNa NiNlNhNtNp)")*B -; FLAM (decode "From: foo@bar.baz (=?ISO-8859-1?Q?a?=)" @@ -132,7 +174,7 @@ "From: foo@bar.baz (ab)") (decode -"From: foo@bar.baz (=?ISO-8859-1?Q?a?= +"From: foo@bar.baz (=?ISO-8859-1?Q?a?=\r =?ISO-8859-1?Q?b?=)" "From: foo@bar.baz (ab)") @@ -161,7 +203,7 @@ "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)") (decode -"Subject: (=?ISO-8859-1?Q?a?= +"Subject: (=?ISO-8859-1?Q?a?=\r =?ISO-8859-1?Q?b?=)" "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)") @@ -173,32 +215,36 @@ "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)" "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-2?Q?_b?=)") -;; Section 2: Decoding trivial inputs. +;;; Section 2: Decoding proper inputs. (decode "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= " "From: $B$"(B ") (decode -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?ISO-2022-JP?B?GyRCJCQbKEI=?= +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r " "From: $B$"$$(B ") (decode -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= - =?ISO-2022-JP?B?GyRCJCQbKEI=?= +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r " "From: $B$"$$(B ") (decode -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= - =?ISO-2022-JP?B?GyRCJCQbKEI=?= +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r " "From: $B$"$$(B ") (decode -"From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?= - =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?= +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"ja \\\"a\\\"\" " +"From: $B$"(B \"ja \\\"a\\\"\" ") + +(decode +"From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r =?ISO-2022-JP?B?GyhC?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)" "From: akr@jaist.ac.jp ($B$"(B($B$$(B)$B$&(B)") @@ -225,7 +271,6 @@ (decode "From: < =?ISO-2022-JP?B?GyRCJCIbKEI=?= @jaist.ac.jp>" "From: < =?ISO-2022-JP?B?GyRCJCIbKEI=?= @jaist.ac.jp>") -; FLAM (decode "From: =?ISO-2022-JP?Q?=1B=24BAA=1B=28B?= " @@ -245,7 +290,8 @@ (decode "From: =?US-ASCII?Q?=28?= , =?US-ASCII?Q?=29?= " -"From: \"(\" , \")\" ") +"From: \"(\" , \")\" " +'ignore-76bytes-limit) (decode "From: =?ISO-2022-JP?B?YSJiGyRCJCIbKEJjXA==?= " @@ -304,13 +350,13 @@ "Subject: =?ISO-2022-JP?B??=") (decode -"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a\r =?ISO-2022-JP?B?GyRCJCQbKEI=?=" "Subject: $B$"(B a $B$$(B") (decode -"Subject: =?ISO-2022-JP?B?GyRCMCQbKEIgICAgICAgICAgICAgICAgICAgICAgICAgICAg?= - =?US-ASCII?Q?____________________________________________________________?= +"Subject: =?ISO-2022-JP?B?GyRCMCQbKEIgICAgICAgICAgICAgICAgICAgICAgICAgICAg?=\r + =?US-ASCII?Q?____________________________________________________________?=\r =?ISO-2022-JP?B?ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBskQlJfGyhC?=" "Subject: $B0$(B $BR_(B") @@ -416,18 +462,29 @@ "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==" "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?==") -;; Section 3: Decoding melancholy inputs. +(decode +"From: akr@jaist.ac.jp (\\=?ISO-2022-JP?B?GyRCJCIbKEI=?=)" +"From: akr@jaist.ac.jp (\\=?ISO-2022-JP?B?GyRCJCIbKEI=?=)") + +(decode +"=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test" +"=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test") + +(decode +"=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test" +"=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test" +'permit-sticked-special) + +;;; Section 3: Decoding melancholic inputs. (decode "From:=?ISO-2022-JP?B?GyRCJCIbKEI=?= " -"From:=?ISO-2022-JP?B?GyRCJCIbKEI=?= ") -; FLAM +"From:$B$"(B ") (decode -"From: akr@jaist.ac.jp +"From: akr@jaist.ac.jp\r (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\\a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)" "From: akr@jaist.ac.jp ($B$"(B\\a$B$$(B)") -; FLAM (decode "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= " @@ -469,7 +526,7 @@ "From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\" ") (decode -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=) +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r " "From: $B$"(B($B$"(B) " 'permit-sticked-comment) @@ -537,27 +594,25 @@ "Subject:$B$"(B" 'permit-sticked-special) -;; Section 4: Decoding invalid inputs. +;;; Section 4: Decoding invalid inputs. (decode -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCQbKEI=?= +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCQbKEI=?=\r " "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?==?ISO-2022-JP?B?GyRCJCQbKEI=?= ") (decode -"From: akr@jaist.ac.jp +"From: akr@jaist.ac.jp\r (=?ISO-2022-JP?B?GyRCJCIbKEI=?=a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)" "From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=a=?ISO-2022-JP?B?GyRCJCQbKEI=?=)") -; FLAM (decode -"From: akr@jaist.ac.jp +"From: akr@jaist.ac.jp\r (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)" "From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)") -; FLAM (decode -"From: akr@jaist.ac.jp +"From: akr@jaist.ac.jp\r (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)" "From: akr@jaist.ac.jp ($B$"(B($B$$(B)$B$&(B)" 'ignore-76bytes-limit) @@ -606,34 +661,46 @@ "Subject: =?ISO-2022-JP?B?GyRCNFg-dBsoQg==?=" "Subject: =?ISO-2022-JP?B?GyRCNFg-dBsoQg==?=") -;; Section 5: Encoding trivial inputs. +(decode +"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?= =?ISO-2022-JP?B?GyRCJCIbKEI=?=" +"Subject: $B$"(B=?=$B$"(B") + +;;; Section 5: Encoding proper inputs. (encode "From: $B$"(B " "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= ") (encode +"From: $B$"$$(B " +"From: =?ISO-2022-JP?B?GyRCJCIkJBsoQg==?= ") + +(encode +"From: $B$"(B $B$$(B " +"From: =?ISO-2022-JP?B?GyRCJCIbKEIgGyRCJCQbKEI=?= ") + +(encode +"From: .AN! N! "*B +"From: =?ISO-8859-1?Q?=A1_=A1?= ") + +(encode "From: \"$B$"(B($B$"(B)\" " "From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= ") -; FLAM (encode "From: \"a\\\"b$B$"(Bc\\\\\" " "From: =?ISO-2022-JP?B?YSJiGyRCJCIbKEJjXA==?= ") -; FLAM (encode "Subject: $B0$(B $BR_(B" -"Subject: =?ISO-2022-JP?B?GyRCMCQbKEIgICAgICAgICAgICAgICAgICAgICAgICAgICAg?= - =?US-ASCII?Q?____________________________________________________________?= +"Subject: =?ISO-2022-JP?B?GyRCMCQbKEIgICAgICAgICAgICAgICAgICAgICAgICAgICAg?=\r + =?US-ASCII?Q?____________________________________________________________?=\r =?ISO-2022-JP?B?ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIBskQlJfGyhC?=") -; FLAM (encode "Subject: $B0$(B $BR_(B" "Subject: =?ISO-2022-JP?B?GyQpQrCkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDS3w==" 'ignore-76bytes-limit 'ignore-75bytes-limit) -; FLAM (encode "From: .AN! "*B @@ -642,12 +709,10 @@ (encode "From: \"abcdefghijklmnopqrst.AN!()\\\"\\\\\" "*B "From: =?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29=22=5C?= ") -; FLAM (encode "From: akr@jaist.ac.jp (abcdefghijklmnopqrst.AN!\\(\\)\"\\\\)"*B "From: akr@jaist.ac.jp (=?ISO-8859-1?Q?abcdefghijklmnopqrst=A1=28=29\"=5C?=)") -; FLAM (encode "Subject: $B$"(B a .HN`"*B @@ -656,7 +721,6 @@ (encode "Subject: .HN`$BNm(B"*B "Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?GyRCTm0bKEI=?=") -; FLAM (encode "Subject: .HN` $BNm(B"*B @@ -668,48 +732,302 @@ '("Subject: =?ISO-8859-7?Q?=C3?= =?ISO-2022-JP?B?GyRCNFg/dBsoQg==?=" "Subject: =?ISO-2022-JP-2?B?Gy5GG05DGyRCNFg/dBsoQg==?=")) -;; Section 6: Encoding melancholy inputs. +(encode +"From: aaaaaaaaaaaaaaaaaaaaa($B$"$$(B)aaaaaaaaaaaaaaaaaaaa " +"From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa ") + +(encode +"From: aaaaaaaaaaaaaaaaaaaaa ($B$"$$(B)aaaaaaaaaaaaaaaaaaaa " +'("From: aaaaaaaaaaaaaaaaaaaaa + (=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)aaaaaaaaaaaaaaaaaaaa " + "From: aaaaaaaaaaaaaaaaaaaaa (=?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa ")) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaa( $B$"$$(B)aaaaaaaaaaaaaaaaaaaa " +'("From: aaaaaaaaaaaaaaaaaaaaa( + =?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)aaaaaaaaaaaaaaaaaaaa " + "From: aaaaaaaaaaaaaaaaaaaaa( =?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa ")) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaa($B$"$$(B )aaaaaaaaaaaaaaaaaaaa " +'("From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?= + )aaaaaaaaaaaaaaaaaaaa " + "From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEI=?= + =?ISO-2022-JP?B?GyRCJCQbKEI=?= )aaaaaaaaaaaaaaaaaaaa ")) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaa($B$"$$(B) aaaaaaaaaaaaaaaaaaaa " +"From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)\r + aaaaaaaaaaaaaaaaaaaa ") + +(encode +"From: aaaaaaaaaaaaaaaaaaaaa($B$"(B $B$$(B)aaaaaaaaaaaaaaaaaaaa " +"From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEIgCg==?=\r + =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa ") + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaa " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaa ") + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaa " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaa\r + ") + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + ") + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From:\r + (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + ") + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From:\r + (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + ") + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyhC?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + " +'zero-characters-encoded-word-hack) + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyhC?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + " +'zero-characters-encoded-word-hack) + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +'separate-sticked-tokens-for-fold) + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)=?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaa?=\r + =?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?= " +'encode-long-ascii-string-for-fold 'permit-sticked-special) + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + aaaaaaaaaaaaaaaa " +'divide-atom-for-fold) + +(encode +"From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +'("From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " + "From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + ") +'ignore-76bytes-limit) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa($B$"(B)aa " +"From: =?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?=\r + =?US-ASCII?Q?a?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aa " +'encode-long-ascii-string-for-fold) + +(encode +"From: $B$"(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa($B$"(B)aa " +"From: =?ISO-2022-JP?B?GyRCJCIbKEIgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==?=\r + =?US-ASCII?Q?aaaaaaaaaaaaaaa?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aa" +'encode-long-ascii-string-for-fold) + +(encode +"From: ($B$"(B) " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=) ") + +(encode +"From: (((((((((((((((((((((((((((((((((((((((($B$"(B)))))))))))))))))))))))))))))))))))))))) " +"From: ((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))\r + " +'zero-characters-encoded-word-hack) + +(encode +"From: ((((((((((((((((((((((((((((((((((((((((($B$"(B))))))))))))))))))))))))))))))))))))))))) " +"From: (((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r + =?ISO-2022-JP?B?GyRCJCIbKEI=?=)))))))))))))))))))))))))))))))))))))))))\r + " +'zero-characters-encoded-word-hack) + +(encode +"From: (((((((((((((((((((((((((((((((((((((((((((((($B$"(B)))))))))))))))))))))))))))))))))))))))))))))) " +"From: ((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r + =?ISO-2022-JP?B?GyRCJCIbKEI=?=))))))))))))))))))))))))))))))))))))))))))))))\r + " +'zero-characters-encoded-word-hack) + +(encode +"From: ((((((((((((((((((((((((((((((((((((((((((((((($B$"(B))))))))))))))))))))))))))))))))))))))))))))))) " +"From: (((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r + =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyhC?=)))))))))))))))))))))))))))))))))))))))))))))))\r + " +'zero-characters-encoded-word-hack) + +(encode +"From: (((((((((((((((((((((((((((((((((((((((((((((((($B$"(B)))))))))))))))))))))))))))))))))))))))))))))))) " +"From:\r + ((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r + =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))))\r + " +'zero-characters-encoded-word-hack) + +(encode +"From: (((((((((((((((((((((((((((((((((((((((((((((((((((((($B$"(B)))))))))))))))))))))))))))))))))))))))))))))))))))))) " +"From:\r + ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r + =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))))))))))\r + " +'zero-characters-encoded-word-hack) + +(encode +"From: ((((((((((((((((((((((((((((((((((((((((((($B$"(B))))))))))))))))))))))))))))))))))))))))))) " +"From:\r + ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r + =?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))))))))))\r + " +'zero-characters-encoded-word-hack) + +(encode +"From: ((((((((((((((((((((((((((((((((((((((((((((((((((((((($B$"(B))))))))))))))))))))))))))))))))))))))))))))))))))))))) " +"From:\r + ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r + =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)=?ISO-2022-JP?B?GyhC?=\r + =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))))))))))))))))))))))))\r + " +'zero-characters-encoded-word-hack) + +(encode +"From: (((((((((((((((((((((((((((((((((((((((((((((((((((((((($B$"(B)))))))))))))))))))))))))))))))))))))))))))))))))))))))) " +"From:\r + ((((((((((((((((((((((((((((((((((((((((((((((((((((((=?ISO-2022-JP?B?GyhC?=\r + =?ISO-2022-JP?B?GyhC?=((=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))))))))))=?ISO-2022-JP?B?GyhC?=\r + =?ISO-2022-JP?B?GyhC?=))))))))))))))))))))))))\r + " +'zero-characters-encoded-word-hack) + +(encode +"From: ()($B$"(B)() " +"From: ()(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)() ") + +(encode +"From: ($B$"(B)()()()()()()()()()()()()()()()()()()() " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)()()()()()()()()()()()()()()()()()()()\r + ") + +(encode +"From: ($B$"(B)()()()()()()()()()()()()()()()()()()()()()() " +"From:\r + (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)()()()()()()()()()()()()()()()()()()()()()()\r + ") + +(encode +"From: ($B$"(B)()()()()()()()()()()()()()()()()()()()()()()() " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyhC?=)()()()()()()()()()()()()()()()()()()()()()()()\r + " +'zero-characters-encoded-word-hack) + +(encode +"From: ($B$"(B)()()()()()()()()()()()()()()()()()()()()()()()()()()() " +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyhC?=)()()()()()()()()()()()()()()()(=?ISO-2022-JP?B?GyhC?=\r + =?ISO-2022-JP?B?GyhC?=)()()()()()()()()()()() " +'zero-characters-encoded-word-hack) + +(encode +"To: l@d ($B$"(B aaa)($B$"(B)" +"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?= aaa)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)") + +(encode +"To: l@d ($B$"(B aaaa)($B$"(B)" +"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + aaaa)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)") + +(encode +"To: l@d ($B$"(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)($B$"(B)" +"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)") + +(encode +"To: l@d ($B$"(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)($B$"(B)" +"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEIgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE=?=\r + =?US-ASCII?Q?aaaaaaaaaaaaaaaaaa?=)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)" +'encode-long-ascii-string-for-fold) + +(encode +"To: l@d ($B$"(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()$B$"(B)" +"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEIgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE=?=\r + =?US-ASCII?Q?aaaaaaaaaaaaaaaaaa?=()=?ISO-2022-JP?B?GyRCJCIbKEI=?=)" +'encode-long-ascii-string-for-fold) + +(encode +"To: l@d ($B$"(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa $B$"(B)($B$"(B)" +"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?= aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + =?ISO-2022-JP?B?GyRCJCIbKEI=?=)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)") + +(encode +"To: l@d ($B$"(B aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa $B$"(B)($B$"(B)" +"To: l@d (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + =?ISO-2022-JP?B?GyRCJCIbKEI=?=)(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)") + +;---------------------------------------------------------------------------- + +;;; Section 6: Encoding melancholic inputs. (encode "From: akr@jaist.ac.jp ($B$"(B($B$$(B)$B$&(B)" -"From: akr@jaist.ac.jp +"From: akr@jaist.ac.jp\r (=?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)" 'ignore-76bytes-limit) -; FLAM (encode "From: akr@jaist.ac.jp ($B$"(B($B$$(B)$B$&(B)" -"From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?= - =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?= +"From: akr@jaist.ac.jp (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyhC?=(=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r =?ISO-2022-JP?B?GyhC?=)=?ISO-2022-JP?B?GyRCJCYbKEI=?=)" 'zero-characters-encoded-word-hack) -; FLAM (encode "From: $B$"(B($B$"(B) " "From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= " 'encode-sticked-comment-as-atom) -; FLAM (encode "From: $B$"(B($B$"(B) " -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=) +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r " 'permit-sticked-comment) -; FLAM (encode "From: $B$"(B($B$"(B) " -"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= (=?ISO-2022-JP?B?GyRCJCIbKEI=?=) +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r " 'separate-sticked-comment) -; FLAM (encode "To: $B$"(B" "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=" 'permit-sticked-special) -; FLAM (encode "To: $B$"(B" @@ -720,7 +1038,6 @@ "To: ,$B$"(B" "To: ,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" 'permit-sticked-special) -; FLAM (encode "To: ,$B$"(B" @@ -731,7 +1048,6 @@ "To: akr@jaist.ac.jp,$B$"(B" "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" 'permit-sticked-special) -; FLAM (encode "To: akr@jaist.ac.jp,$B$"(B" @@ -742,175 +1058,166 @@ "To: $B$"(B:akr@jaist.ac.jp;" "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;" 'permit-sticked-special) -; FLAM (encode "To: $B$"(B:akr@jaist.ac.jp;" "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= :akr@jaist.ac.jp;" 'separate-sticked-special) -; FLAM (encode "To: $B$"(B:$B$$(B;" "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=;" 'ignore-76bytes-limit 'permit-sticked-special) -; FLAM (encode "To: $B$"(B:$B$$(B;" -"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?= +"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r =?ISO-2022-JP?B?GyhC?=;" 'zero-characters-encoded-word-hack 'permit-sticked-special) -; FLAM (encode "To: $B$"(B:$B$$(B;" -"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= : =?ISO-2022-JP?B?GyRCJCQbKEI=?= +"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= : =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r ;" 'separate-sticked-special) -; FLAM (encode "To: $B$"(B:$B$$(B,$B$&(B;,$B$((B" "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=,=?ISO-2022-JP?B?GyRCJCYbKEI=?=;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=" 'ignore-76bytes-limit 'permit-sticked-special) -; FLAM (encode "To: $B$"(B:$B$$(B,$B$&(B;,$B$((B" -"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?= - =?ISO-2022-JP?B?GyhC?=,=?ISO-2022-JP?B?GyRCJCYbKEI=?= +"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=\r + =?ISO-2022-JP?B?GyhC?=,=?ISO-2022-JP?B?GyRCJCYbKEI=?=\r =?ISO-2022-JP?B?GyhC?=;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=" 'zero-characters-encoded-word-hack 'permit-sticked-special) -; FLAM (encode "To: $B$"(B:$B$$(B,$B$&(B;,$B$((B" -"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= : =?ISO-2022-JP?B?GyRCJCQbKEI=?= - , =?ISO-2022-JP?B?GyRCJCYbKEI=?= ;, +"To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= : =?ISO-2022-JP?B?GyRCJCQbKEI=?=\r + , =?ISO-2022-JP?B?GyRCJCYbKEI=?= ;,\r =?ISO-2022-JP?B?GyRCJCgbKEI=?= " 'separate-sticked-special) -; FLAM -;; Section 7: Using quoted-encoded-words. -; +;;; Section 7: Using quoted-encoded-words. +;; ;; quoted-encoded-word $BI=8=(B -; -; RFC2047 $B$N%G%3!<%@$O@x:_E*$K(B($B%G%3!<%I7k2L$G$J$/(B) encoded-word $B$=$N$b$N$r(B -; $B=PNO$7$J$1$l$P$J$i$J$$$3$H$,$"$k!#(B -; -; 1. $BCN$i$J$$(B charset $B$b$7$/$O(B encoding $B$,;XDj$5$l$F$$$?$H$-!#(B -; =?unknown-charset?known-encoding?some-encoded-text?= -; =?known-charset?unknown-encoding?some-encoded-text?= -; =?unknown-charset?unknown-encoding?some-encoded-text?= -; -; 2. $B%G%3!<%I$G$-$F$bFbMF$,7uF]$9$.$k$H$-!#(B -; Non ASCII $B3HD%(B RFC822 $B$NCf$K(B =?US-ASCII?Q?=0D=0A=0D=0A?= $B$N%G%3!<%I(B -; $B7k2L$rKd$a9~$`$N$O4m81$9$.$k!#(B -; -; $B$^$?!"%G%3!<%@$O(B encoded-word $B$N$h$&$K$_$($k%G%3!<%I7k2L$r=PNO$7$J$1(B -; $B$l$P$J$i$J$$$3$H$b$"$k!#(B -; -; =?US-ASCII?Q?=3D=3FUS-ASCII=3FQ=3Ftext=3F=3D?= -; -; $B%G%3!<%@$,C1$J$kJ8;zNs$r=PNO$9$k>l9g!"C1=c$K$d$k$H(B encoded-word $B$=$N$b$N$H(B -; encoded-word $B$N$h$&$K$_$($kJ8;zNs$r6hJL$G$-$J$$!#(B -; $B$3$3$G$OJ8;zNsCf$G$=$l$i$r3Nl9g(B(0, 2, 4, ...): charset $B$N@hF,$N(B '*' $B$N?t$rH>J,$K$7$?J8;zNs(B -; $B4q?t$N>l9g(B(1, 3, 5, ...): charset $B$N@hF,$N(B '*' $B$N?t$rH>J,(B($B>.?tE@0J2<(B -; $B@Z$l$=$NJ8;zNs$=$N$b$N$rI=8=$9$k$,!"$=$l$i$rO"7k$7$?J8;zNs(B -; =?*US-ASCII?Q?abcd?= $B$O(B abcd $B$H$$$&J8;zNs$rI=8=$9$k$3$H$K$J$j!"(B -; $B$=$l$>$l$NFbMF$NO"7k$H$O$J$i$J$$!#(B -; -; $B$3$l$O$H$/$K(B Non ASCII $B3HD%(B RFC822 $B$NCf$K(B quoted-encoded-word $BI=8=$r(B -; $BKd$a9~$`$H$-$K5$$rIU$1$J$1$l$P$J$i$J$$!#(B($BKd$a9~$s$@7k2L$O@5$7$$(B -; quoted-encoded-word $BI=8=$H$O$J$i$J$$$+$bCN$l$J$$!#(B) +;; +;; RFC2047 $B$N%G%3!<%@$O@x:_E*$K(B($B%G%3!<%I7k2L$G$J$/(B) encoded-word $B$=$N$b$N$r(B +;; $B=PNO$7$J$1$l$P$J$i$J$$$3$H$,$"$k!#(B +;; +;; 1. $BCN$i$J$$(B charset $B$b$7$/$O(B encoding $B$,;XDj$5$l$F$$$?$H$-!#(B +;; =?unknown-charset?known-encoding?some-encoded-text?= +;; =?known-charset?unknown-encoding?some-encoded-text?= +;; =?unknown-charset?unknown-encoding?some-encoded-text?= +;; +;; 2. $B%G%3!<%I$G$-$F$bFbMF$,7uF]$9$.$k$H$-!#(B +;; Non ASCII $B3HD%(B RFC822 $B$NCf$K(B =?US-ASCII?Q?=0D=0A=0D=0A?= $B$N%G%3!<%I(B +;; $B7k2L$rKd$a9~$`$N$O4m81$9$.$k!#(B +;; +;; $B$^$?!"%G%3!<%@$O(B encoded-word $B$N$h$&$K$_$($k%G%3!<%I7k2L$r=PNO$7$J$1(B +;; $B$l$P$J$i$J$$$3$H$b$"$k!#(B +;; +;; =?US-ASCII?Q?=3D=3FUS-ASCII=3FQ=3Ftext=3F=3D?= +;; +;; $B%G%3!<%@$,C1$J$kJ8;zNs$r=PNO$9$k>l9g!"C1=c$K$d$k$H(B encoded-word $B$=$N$b$N$H(B +;; encoded-word $B$N$h$&$K$_$($kJ8;zNs$r6hJL$G$-$J$$!#(B +;; $B$3$3$G$OJ8;zNsCf$G$=$l$i$r3Nl9g(B(0, 2, 4, ...): charset $B$N@hF,$N(B + $B$N?t$rH>J,$K$7$?J8;zNs(B +;; $B4q?t$N>l9g(B(1, 3, 5, ...): charset $B$N@hF,$N(B + $B$N?t$rH>J,(B($B>.?tE@0J2<(B +;; $B@Z$l$=$NJ8;zNs$=$N$b$N$rI=8=$9$k$,!"$=$l$i$rO"7k$7$?J8;zNs(B +;; =?+US-ASCII?Q?abcd?= $B$O(B abcd $B$H$$$&J8;zNs$rI=8=$9$k$3$H$K$J$j!"(B +;; $B$=$l$>$l$NFbMF$NO"7k$H$O$J$i$J$$!#(B +;; +;; $B$3$l$O$H$/$K(B Non ASCII $B3HD%(B RFC822 $B$NCf$K(B quoted-encoded-word $BI=8=$r(B +;; $BKd$a9~$`$H$-$K5$$rIU$1$J$1$l$P$J$i$J$$!#(B($BKd$a9~$s$@7k2L$O@5$7$$(B +;; quoted-encoded-word $BI=8=$H$O$J$i$J$$$+$bCN$l$J$$!#(B) (decode "Subject: =?Unknown-Charset?B?gqA=?=" -"Subject: =?*Unknown-Charset?B?gqA=?=" +"Subject: =?+Unknown-Charset?B?gqA=?=" +'quoted-encoded-word) + +(decode +"Subject: =?US-ASCII?G?H4sIACqUszUAA8tIzcnJBwCGphA2BQAAAA==?=" +"Subject: =?+US-ASCII?G?H4sIACqUszUAA8tIzcnJBwCGphA2BQAAAA==?=" 'quoted-encoded-word) -; FLAM (decode -"Subject: =?US-ASCII?G?H4sIAMsIsjUCA0tMSk5JTQMA7zmOSwYAAAA?=" -"Subject: =?*US-ASCII?G?H4sIAMsIsjUCA0tMSk5JTQMA7zmOSwYAAAA?=" +"Subject: =?US-ASCII?Unknown-Encoding?H4sIAGOUszUAAwtyczYyMDEHAEpvqpIHAAAA?=" +"Subject: =?+US-ASCII?Unknown-Encoding?H4sIAGOUszUAAwtyczYyMDEHAEpvqpIHAAAA?=" 'quoted-encoded-word) -; FLAM (decode -"Subject: =?US-ASCII?Unknown-Encoding?H4sIAMsIsjUCA0tMSk5JTQMA7zmOSwYAAAA?=" -"Subject: =?*US-ASCII?Unknown-Encoding?H4sIAMsIsjUCA0tMSk5JTQMA7zmOSwYAAAA?=" +"Subject: =?ISO-2022-JP?G?H4sIAGiTszUAA5NWcVIBAhMtaQ0nAGLSaeEMAAAA?=\r + =?ISO-2022-JP?G?H4sIAH6TszUAA5NWcVIxV3FTyVbxldZwAgAuIikKDgAAAA==?=" +"Subject: =?+ISO-2022-JP?G?H4sIAGiTszUAA5NWcVIBAhMtaQ0nAGLSaeEMAAAA?==?+ISO-2022-JP?G?H4sIAH6TszUAA5NWcVIxV3FTyVbxldZwAgAuIikKDgAAAA==?=" 'quoted-encoded-word) -; FLAM (decode "Subject: =?Unknown-Charset?B?gqA=?= =?Unknown-Charset?B?gqA=?=" -"Subject: =?*Unknown-Charset?B?gqA=?==?*Unknown-Charset?B?gqA=?=" +"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?=" 'quoted-encoded-word) -; FLAM (decode "Subject: =?Unknown-Charset?B?gqA=?= =?Unknown-Charset?B?gqA=?=" -"Subject: =?*Unknown-Charset?B?gqA=?==?*Unknown-Charset?B?gqA=?=" +"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?=" 'quoted-encoded-word) -; FLAM (decode -"Subject: =?Unknown-Charset?B?gqA=?= +"Subject: =?Unknown-Charset?B?gqA=?=\r =?Unknown-Charset?B?gqA=?=" -"Subject: =?*Unknown-Charset?B?gqA=?==?*Unknown-Charset?B?gqA=?=" +"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?=" 'quoted-encoded-word) -; FLAM (decode -"Subject: =?Unknown-Charset?B?gqA=?= +"Subject: =?Unknown-Charset?B?gqA=?=\r =?Unknown-Charset?B?gqA=?=" -"Subject: =?*Unknown-Charset?B?gqA=?==?*Unknown-Charset?B?gqA=?=" +"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?=" 'quoted-encoded-word) -; FLAM (decode "Subject: a=?Unknown-Charset?B?gqA=?=" @@ -929,23 +1236,25 @@ (decode "Subject: a =?Unknown-Charset?B?gqA=?= b" -"Subject: a =?*Unknown-Charset?B?gqA=?= b" +"Subject: a =?+Unknown-Charset?B?gqA=?= b" 'quoted-encoded-word) -; FLAM (decode "Subject: =?ISO-2022-JP?B?DQoNCg==?=" -"Subject: =?*US-ASCII?Q?=0D=0A=0D=0A?=" +"Subject: =?+US-ASCII?Q?=0D=0A=0D=0A?=" 'quoted-encoded-word) -; FLAM (decode "Subject: =?US-ASCII?Q?a=0D=0A_b?=" -"Subject: a=?*US-ASCII?Q?=0D=0A?= b" +"Subject: a b" +'quoted-encoded-word) + +(decode +"Subject: =?US-ASCII?Q?a=0D=0Ab?=" +"Subject: a=?+US-ASCII?Q?=0D=0A?=b" 'quoted-encoded-word) -; FLAM -;;;end-test;;; +;;;end-test (report)