X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=TESTPAT;h=107ea08daaca1d6eade4177b0414a4be9ee53611;hb=refs%2Fheads%2Fdoodle;hp=ee91888d37d81c2573c83b90828ab73407a32405;hpb=5858f281e9a7afb1147796993e80c2bab0dc5c36;p=elisp%2Fflim.git diff --git a/TESTPAT b/TESTPAT index ee91888..107ea08 100644 --- a/TESTPAT +++ b/TESTPAT @@ -1,98 +1,25 @@ +;;; -*- mode: emacs-lisp; coding: iso-2022-7bit-ss2 -*- ;---------------------------------------------------------------------------- ;-------- This sequece of HYPHEN-MINUS is 76 bytes long. -------------------- ;---------------------------------------------------------------------------- -; 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 - -(setq decode-test 'decode-flam) -(setq encode-test 'encode-flam) - -(setq decode-succ-count 0) -(setq decode-all-count 0) -(defun decode (src dsts &rest opts) - (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) - (error nil)))) - (if (eq res t) - (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)) - (let ((res (condition-case nil - (apply encode-test src dsts opts) - (error nil)))) - (if (eq res t) - (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 Total: %d/%d\"" - decode-succ-count decode-all-count - encode-succ-count encode-all-count - (+ decode-succ-count encode-succ-count) - (+ decode-all-count encode-all-count)))) - -;;; FLAM specific part (FLIM is OK) - -(defun decode-flam (src dsts &rest opts) - (setq eword-lexical-analyze-cache nil) - (setq eword-decode-sticked-encoded-word - (or (memq 'permit-sticked-comment opts) - (memq 'permit-sticked-special opts))) - (setq eword-decode-quoted-encoded-word nil) - (with-temp-buffer - (insert src "\n" mail-header-separator) - (eword-decode-header 'us-ascii mail-header-separator) - (goto-char (point-min)) - (std11-narrow-to-header mail-header-separator) - (std11-field-end) - (let ((result (buffer-substring (point-min) (point)))) - (if (member result dsts) t result)))) - -(defun encode-flam (src dsts &rest opts) - (setq eword-lexical-analyze-cache nil) - (setq eword-decode-sticked-encoded-word nil) - (setq eword-decode-quoted-encoded-word nil) - (with-temp-buffer - (insert src "\n" mail-header-separator) - (goto-char (point-min)) - (eword-encode-header 'us-ascii) - (goto-char (point-min)) - (std11-narrow-to-header mail-header-separator) - (std11-field-end) - (let ((result (buffer-substring (point-min) (point)))) - (if (member result dsts) t result)))) - -;;;start-test;;; - -;; Section 1: Decoding examples from RFC2047 +;;; 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) +;;embedded-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 + +(defconst test-patterns '( + +;;; Section 1: Decoding examples from RFC2047 (decode "From: =?US-ASCII?Q?Keith_Moore?= " @@ -107,7 +34,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.") @@ -120,9 +47,9 @@ "From: Patrik F.ANdltstrNvm ")*B (decode -"From: Nathaniel Borenstein - (=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)" -"From: Nathaniel Borenstein (.HNmNeNlNy NoNa NiNlNhNtNp)")*B +"From: Nathaniel Borenstein \r +\t(=?iso-8859-8?b?7eXs+SDv4SDp7Oj08A==?=)" +"From: Nathaniel Borenstein \t(.HNmNeNlNy NoNa NiNlNhNtNp)")*B (decode "From: foo@bar.baz (=?ISO-8859-1?Q?a?=)" @@ -141,8 +68,8 @@ "From: foo@bar.baz (ab)") (decode -"From: foo@bar.baz (=?ISO-8859-1?Q?a?= - =?ISO-8859-1?Q?b?=)" +"From: foo@bar.baz (=?ISO-8859-1?Q?a?=\r +\t=?ISO-8859-1?Q?b?=)" "From: foo@bar.baz (ab)") (decode @@ -170,9 +97,9 @@ "Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)") (decode -"Subject: (=?ISO-8859-1?Q?a?= - =?ISO-8859-1?Q?b?=)" -"Subject: (=?ISO-8859-1?Q?a?= =?ISO-8859-1?Q?b?=)") +"Subject: (=?ISO-8859-1?Q?a?=\r +\t=?ISO-8859-1?Q?b?=)" +"Subject: (=?ISO-8859-1?Q?a?=\t=?ISO-8859-1?Q?b?=)") (decode "Subject: (=?ISO-8859-1?Q?a_b?=)" @@ -182,32 +109,76 @@ "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 proper 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=?= " +"From: $B$"(B ") + +(decode +"From: =?iso-2022-jp?B?GyRCJCIbKEI=?= " +"From: $B$"(B ") + +(decode +"From: =?iSo-2022-jP?B?GyRCJCIbKEI=?= " +"From: $B$"(B ") + +(decode +"From: =?ISO-2022-JP?Q?=1B=24B=24=22=1B=28B?= " +"From: $B$"(B ") + +(decode +"From: =?ISO-2022-JP?q?=1B=24B=24=22=1B=28B?= " +"From: $B$"(B ") + +(decode +"From: =?iso-2022-jp?Q?=1B=24B=24=22=1B=28B?= " +"From: $B$"(B ") + +(decode +"From: =?iSo-2022-jP?Q?=1B=24B=24=22=1B=28B?= " +"From: $B$"(B ") + +(decode +"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 +\t=?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: =?US-ASCII?Q?=2C?= " +"From: \",\" ") + +(decode +"From: =?ISO-2022-JP?B?GyRCJCIbKEI=?= =?US-ASCII?Q?=2E?= " +"From: \"$B$"(B.\" ") + +(decode +"From: =?US-ASCII?Q?=2E?= =?ISO-2022-JP?B?GyRCJCIbKEI=?= " +"From: \".$B$"(B\" ") + +(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)") @@ -236,10 +207,6 @@ "From: < =?ISO-2022-JP?B?GyRCJCIbKEI=?= @jaist.ac.jp>") (decode -"From: =?ISO-2022-JP?Q?=1B=24BAA=1B=28B?= " -"From: $BAA(B ") - -(decode "From: =?ISO-2022-JP?Q?=1B$BAA=1B(B?= ) " "From: =?ISO-2022-JP?Q?=1B$BAA=1B(B?= ) ") @@ -248,12 +215,17 @@ "From: (=?US-ASCII?Q?(?=)foo@bar.baz(=?US-ASCII?Q?))baz@bar.foo(?=)") (decode +"From: =?US-ASCII?Q?=22?= " +"From: \"\\\"\" ") + +(decode "From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= " "From: \"$B$"(B($B$"(B)\" ") (decode "From: =?US-ASCII?Q?=28?= , =?US-ASCII?Q?=29?= " -"From: \"(\" , \")\" ") +"From: \"(\" , \")\" " +ignore-76bytes-limit) (decode "From: =?ISO-2022-JP?B?YSJiGyRCJCIbKEJjXA==?= " @@ -300,6 +272,14 @@ "Subject: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"b\"") (decode +"Subject: \"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"" +"Subject: \"=?ISO-2022-JP?B?GyRCJCIbKEI=?=\"") + +(decode +"Subject: \" =?ISO-2022-JP?B?GyRCJCIbKEI=?= \"" +"Subject: \" $B$"(B \"") + +(decode "Subject: (Re: =?ISO-2022-JP?B?GyRCJCIbKEI=?=)" "Subject: (Re: =?ISO-2022-JP?B?GyRCJCIbKEI=?=)") @@ -312,13 +292,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") @@ -368,13 +348,11 @@ (decode "Subject: =?Shift_JIS?B?gqA=?=" -"Subject: $B$"(B" -'quoted-encoded-word) +"Subject: $B$"(B") (decode "Subject: =?EUC-JP?B?pKI=?=" -"Subject: $B$"(B" -'quoted-encoded-word) +"Subject: $B$"(B") (decode "Subject: = =?ISO-2022-JP?B?GyRCJCIbKEI=?=" @@ -435,16 +413,16 @@ (decode "=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test" "=?ISO-2022-JP?B?GyRCJCIbKEI=?=: test" -'permit-sticked-special) +permit-sticked-special) -;; Section 3: Decoding melancholic inputs. +;;; Section 3: Decoding melancholic inputs. (decode "From:=?ISO-2022-JP?B?GyRCJCIbKEI=?= " -"From:=?ISO-2022-JP?B?GyRCJCIbKEI=?= ") +"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)") @@ -463,17 +441,17 @@ (decode "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?= " "From: (a)$B$"(B " -'permit-sticked-comment) +permit-sticked-comment) (decode "From: =?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) " "From: $B$"(B(b) " -'permit-sticked-comment) +permit-sticked-comment) (decode "From: (a)=?ISO-2022-JP?B?GyRCJCIbKEI=?=(b) " "From: (a)$B$"(B(b) " -'permit-sticked-comment) +permit-sticked-comment) (decode "From: \"a\"=?ISO-2022-JP?B?GyRCJCIbKEI=?= " @@ -488,10 +466,10 @@ "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) +permit-sticked-comment) (decode "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=" @@ -500,7 +478,7 @@ (decode "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=" "To: $B$"(B" -'permit-sticked-special) +permit-sticked-special) (decode "To: ,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" @@ -509,7 +487,7 @@ (decode "To: ,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" "To: ,$B$"(B" -'permit-sticked-special) +permit-sticked-special) (decode "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" @@ -518,7 +496,7 @@ (decode "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" "To: akr@jaist.ac.jp,$B$"(B" -'permit-sticked-special) +permit-sticked-special) (decode "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;" @@ -527,7 +505,7 @@ (decode "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;" "To: $B$"(B:akr@jaist.ac.jp;" -'permit-sticked-special) +permit-sticked-special) (decode "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=;" @@ -536,7 +514,7 @@ (decode "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=;" "To: $B$"(B:$B$$(B;" -'ignore-76bytes-limit 'permit-sticked-special) +ignore-76bytes-limit permit-sticked-special) (decode "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=,=?ISO-2022-JP?B?GyRCJCYbKEI=?=;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=" @@ -545,39 +523,34 @@ (decode "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=,=?ISO-2022-JP?B?GyRCJCYbKEI=?=;,=?ISO-2022-JP?B?GyRCJCgbKEI=?=" "To: $B$"(B:$B$$(B,$B$&(B;,$B$((B" -'ignore-76bytes-limit 'permit-sticked-special) - -(decode -"Subject:=?ISO-2022-JP?B?GyRCJCIbKEI=?=" -"Subject:=?ISO-2022-JP?B?GyRCJCIbKEI=?=") +ignore-76bytes-limit permit-sticked-special) (decode "Subject:=?ISO-2022-JP?B?GyRCJCIbKEI=?=" -"Subject:$B$"(B" -'permit-sticked-special) +"Subject:$B$"(B") -;; 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=?=)") (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=?=)") (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) +ignore-76bytes-limit) (decode "Subject: =?=?ISO-2022-JP?B?GyRCJCIbKEI=?=" @@ -623,7 +596,11 @@ "Subject: =?ISO-2022-JP?B?GyRCNFg-dBsoQg==?=" "Subject: =?ISO-2022-JP?B?GyRCNFg-dBsoQg==?=") -;; Section 5: Encoding proper 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 " @@ -638,23 +615,35 @@ "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?= ") (encode +"From: $B$"(B\"a\" " +"From: =?ISO-2022-JP?B?GyRCJCIbKEJh?= ") + +(encode +"From: \"a\"$B$"(B " +"From: =?ISO-2022-JP?B?YRskQiQiGyhC?= ") + +(encode "From: \"a\\\"b$B$"(Bc\\\\\" " "From: =?ISO-2022-JP?B?YSJiGyRCJCIbKEJjXA==?= ") (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?=") (encode "Subject: $B0$(B $BR_(B" "Subject: =?ISO-2022-JP?B?GyQpQrCkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDS3w==" -'ignore-76bytes-limit 'ignore-75bytes-limit) +ignore-76bytes-limit ignore-75bytes-limit) (encode "From: .AN! "*B @@ -670,56 +659,60 @@ (encode "Subject: $B$"(B a .HN`"*B -"Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a =?ISO-8859-8?Q?=E0?=") +("Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a =?ISO-8859-8?Q?=E0?=" + "Subject: =?ISO-2022-JP?B?GyRCJCIbKEI=?= a =?ISO-8859-8?B?4A==?=")) (encode "Subject: .HN`$BNm(B"*B -"Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?GyRCTm0bKEI=?=") +("Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?GyRCTm0bKEI=?=" + "Subject: =?ISO-8859-8?B?4A==?= =?ISO-2022-JP?B?GyRCTm0bKEI=?=")) (encode "Subject: .HN` $BNm(B"*B -'("Subject: =?ISO-8859-8?Q?=E0_?= =?ISO-2022-JP?B?GyRCTm0bKEI=?=" - "Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?IBskQk5tGyhC?=")) +("Subject: =?ISO-8859-8?Q?=E0_?= =?ISO-2022-JP?B?GyRCTm0bKEI=?=" + "Subject: =?ISO-8859-8?Q?=E0?= =?ISO-2022-JP?B?IBskQk5tGyhC?=" + "Subject: =?ISO-8859-8?B?4CA=?= =?ISO-2022-JP?B?GyRCTm0bKEI=?=" + "Subject: =?ISO-8859-8?B?4A==?= =?ISO-2022-JP?B?IBskQk5tGyhC?=")) (encode "Subject: .FNC$B4X?t(B"*B -'("Subject: =?ISO-8859-7?Q?=C3?= =?ISO-2022-JP?B?GyRCNFg/dBsoQg==?=" - "Subject: =?ISO-2022-JP-2?B?Gy5GG05DGyRCNFg/dBsoQg==?=")) +("Subject: =?ISO-8859-7?Q?=C3?= =?ISO-2022-JP?B?GyRCNFg/dBsoQg==?=" + "Subject: =?ISO-2022-JP-2?B?Gy5GG05DGyRCNFg/dBsoQg==?=")) (encode "From: aaaaaaaaaaaaaaaaaaaaa($B$"$$(B)aaaaaaaaaaaaaaaaaaaa " -"From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEI=?= +"From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa ") (encode "From: aaaaaaaaaaaaaaaaaaaaa ($B$"$$(B)aaaaaaaaaaaaaaaaaaaa " -'("From: aaaaaaaaaaaaaaaaaaaaa +("From: aaaaaaaaaaaaaaaaaaaaa (=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)aaaaaaaaaaaaaaaaaaaa " - "From: aaaaaaaaaaaaaaaaaaaaa (=?ISO-2022-JP?B?GyRCJCIbKEI=?= + "From: aaaaaaaaaaaaaaaaaaaaa (=?ISO-2022-JP?B?GyRCJCIbKEI=?= =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa ")) (encode "From: aaaaaaaaaaaaaaaaaaaaa( $B$"$$(B)aaaaaaaaaaaaaaaaaaaa " -'("From: aaaaaaaaaaaaaaaaaaaaa( +("From: aaaaaaaaaaaaaaaaaaaaa( =?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)aaaaaaaaaaaaaaaaaaaa " - "From: aaaaaaaaaaaaaaaaaaaaa( =?ISO-2022-JP?B?GyRCJCIbKEI=?= + "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==?= +("From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?= )aaaaaaaaaaaaaaaaaaaa " - "From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEI=?= + "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==?=) +"From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIkJBsoQg==?=)\r aaaaaaaaaaaaaaaaaaaa ") (encode "From: aaaaaaaaaaaaaaaaaaaaa($B$"(B $B$$(B)aaaaaaaaaaaaaaaaaaaa " -"From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEIgCg==?= +"From: aaaaaaaaaaaaaaaaaaaaa(=?ISO-2022-JP?B?GyRCJCIbKEIgCg==?=\r =?ISO-2022-JP?B?GyRCJCQbKEI=?=)aaaaaaaaaaaaaaaaaaaa ") (encode @@ -728,322 +721,797 @@ (encode "From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaa " -"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaa +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaa\r ") (encode "From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " -"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r ") (encode "From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " -"From: - (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"From:\r + (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r ") (encode "From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " -"From: - (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"From:\r + (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r ") (encode "From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " -"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?= - =?ISO-2022-JP?B?GyhC?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyhC?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r " -'zero-characters-encoded-word-hack) +zero-characters-encoded-word-hack) (encode "From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " -"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?= - =?ISO-2022-JP?B?GyhC?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=\r + =?ISO-2022-JP?B?GyhC?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r " -'zero-characters-encoded-word-hack) +zero-characters-encoded-word-hack) (encode "From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " -"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=) +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)\r aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " -'separate-sticked-tokens-for-fold) +separate-sticked-tokens-for-fold) (encode "From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " -"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)=?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaa?= +"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-long-ascii-string-for-fold permit-sticked-special) (encode "From: ($B$"(B)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " -"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"From: (=?ISO-2022-JP?B?GyRCJCIbKEI=?=)aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r aaaaaaaaaaaaaaaa " -'divide-atom-for-fold) +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) -;; Section 6: Encoding melancholic inputs. +(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=?=)") + +(encode +"Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ?$(C$!(B?" +"Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =?EUC-KR?B?P6ShPw==?=") + +(encode +"Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ?$(C$!(B?" +"Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=") + +(encode +"Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ?$(C$!(B?" +"Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa =?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=") + +(encode +"Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ?$(C$!(B?" +"Subject: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + =?EUC-KR?B?P6ShPw==?=") + +;---------------------------------------------------------------------------- + +;;; 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) +ignore-76bytes-limit) (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) +zero-characters-encoded-word-hack) (encode "From: $B$"(B($B$"(B) " "From: =?ISO-2022-JP?B?GyRCJCIbKEIoGyRCJCIbKEIp?= " -'encode-sticked-comment-as-atom) +encode-sticked-comment-as-atom) (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) +permit-sticked-comment) (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) +separate-sticked-comment) (encode "To: $B$"(B" "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=" -'permit-sticked-special) +permit-sticked-special) (encode "To: $B$"(B" "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= " -'separate-sticked-special) +separate-sticked-special) (encode "To: ,$B$"(B" "To: ,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" -'permit-sticked-special) +permit-sticked-special) (encode "To: ,$B$"(B" "To: , =?ISO-2022-JP?B?GyRCJCIbKEI=?= " -'separate-sticked-special) +separate-sticked-special) (encode "To: akr@jaist.ac.jp,$B$"(B" "To: akr@jaist.ac.jp,=?ISO-2022-JP?B?GyRCJCIbKEI=?=" -'permit-sticked-special) +permit-sticked-special) (encode "To: akr@jaist.ac.jp,$B$"(B" "To: akr@jaist.ac.jp, =?ISO-2022-JP?B?GyRCJCIbKEI=?= " -'separate-sticked-special) +separate-sticked-special) (encode "To: $B$"(B:akr@jaist.ac.jp;" "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:akr@jaist.ac.jp;" -'permit-sticked-special) +permit-sticked-special) (encode "To: $B$"(B:akr@jaist.ac.jp;" "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?= :akr@jaist.ac.jp;" -'separate-sticked-special) +separate-sticked-special) (encode "To: $B$"(B:$B$$(B;" "To: =?ISO-2022-JP?B?GyRCJCIbKEI=?=:=?ISO-2022-JP?B?GyRCJCQbKEI=?=;" -'ignore-76bytes-limit 'permit-sticked-special) +ignore-76bytes-limit permit-sticked-special) (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) +zero-characters-encoded-word-hack permit-sticked-special) (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) +separate-sticked-special) (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) +ignore-76bytes-limit permit-sticked-special) (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) +zero-characters-encoded-word-hack permit-sticked-special) (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) - -;; 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) +separate-sticked-special) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaa " +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6ShPw==?=()aaaaa\r + " +permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaa " +("From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=()aaaaa " + "From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?US-ASCII?Q?=3F?=\r + =?EUC-KR?B?pKE/?=()aaaaa ") +permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaa " +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6Sh?= + =?US-ASCII?Q?=3F?=()aaaaa " +permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +("From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " + "From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?US-ASCII?Q?=3F?=\r + =?EUC-KR?B?pKE/?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ") +permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?US-ASCII?Q?=3F?=\r + =?EUC-KR?B?pKE/?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?US-ASCII?Q?=3F?=\r + =?EUC-KR?B?pKE/?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + " +permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + " +permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From:\r + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + " +permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +"From:\r + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?US-ASCII?Q?=3F?=\r + =?EUC-KR?B?pKE/?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + " +permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa " +("From:\r + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?EUC-KR?B?P6Sh?=\r + =?US-ASCII?Q?=3F?=()=?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?=\r + =?US-ASCII?Q?aaaaaaaaaaaaaaaa?= " + "From: =?US-ASCII?Q?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa?= + =?US-ASCII?Q?aa?=()=?US-ASCII?Q?=3F?=\r + =?EUC-KR?B?pKE/?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\r + ") +permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?US-ASCII?Q?=3F?=\r + =?EUC-KR?B?pKE/?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +permit-sticked-comment) + +(encode +"From:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +"From:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?US-ASCII?Q?=3F?=\r + =?EUC-KR?B?pKE/?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +permit-sticked-comment) + +(encode +"From: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()?$(C$!(B?()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +"From:\r + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()=?US-ASCII?Q?=3F?=\r + =?EUC-KR?B?pKE/?=()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +permit-sticked-comment) + +;---------------------------------------------------------------------------- + +;;; Section 7: Using embedded-encoded-words. +;; +;; embedded-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$O(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, 3, 6, ...): charset $B$N@hF,$N(B + $B$N?t$r(B +;; 1/3 $B$K$7$?J8;zNs(B +;; 3$B$rK!$H$7$F(B1$B$HEy$7$$>l9g(B(1, 4, 7, ...): charset $B$N@hF,$N(B + $B$N?t$r(B +;; 1/3 ($B>.?tE@0J2<@Zl9g(B(2, 5, 8, ...): charset $B$N@hF,$N(B + $B$N?t$r(B +;; 1/3 ($B>.?tE@0J2<@Zl9g!"4q?tHVL\$N$b$N$KBP$7$F>e5-$N%k!<%k$rE,MQ$9$k!#(B +;; +;; NOTE: + $B$r(B embedded-encoded-word $BI=8=$N(B quote $BJ8;z$H8F$V!#(B +;; +;; NOTE: $B8=;~E@(B(1998/07/19)$B$G(B IANA $B$K$O(B + $B$r4^$`(B charset $B$O(B +;; $BEPO?$5$l$F$$$J$$$N$G!"$=$l$i$N(B charset $B$r;H$C$?(B +;; encoded-word $B$rI=8=$9$k$K$O(B + $B$r(B 1$B$D$D$1$k$3$H$K$J$k!#(B +;; +;; =?US-ASCII?Q?abcdef?= $B$H$$$&(Bencoded-word : =?+US-ASCII?Q?abcdef?= +;; +;; =?US-ASCII?Q?abcdef?= $B$H$$$&J8;zNs(B : =?US-ASCII?Q?abcdef?= +;; =?+US-ASCII?Q?abcdef?= $B$H$$$&J8;zNs(B : =?+++US-ASCII?Q?abcdef?= +;; =?++US-ASCII?Q?abcdef?= $B$H$$$&J8;zNs(B : =?++++++US-ASCII?Q?abcdef?= +;; =?+++US-ASCII?Q?abcdef?= $B$H$$$&J8;zNs(B : =?+++++++++US-ASCII?Q?abcdef?= +;; =?US-ASCII+?Q?abcdef?= $B$H$$$&J8;zNs(B : =?US-ASCII+?Q?abcdef?= +;; =?U+S-ASCII?Q?abcdef?= $B$H$$$&J8;zNs(B : =?U+S-ASCII?Q?abcdef?= +;; +;; =?US-ASCII?Q?abcdef? $B$H$$$&J8;zNs(B : =?++US-ASCII?Q?abcdef?= +;; =?+US-ASCII?Q?abcdef? $B$H$$$&J8;zNs(B : =?+++++US-ASCII?Q?abcdef?= +;; =?++US-ASCII?Q?abcdef? $B$H$$$&J8;zNs(B : =?++++++++US-ASCII?Q?abcdef?= +;; =?+++US-ASCII?Q?abcdef? $B$H$$$&J8;zNs(B : =?+++++++++++US-ASCII?Q?abcdef?= +;; +;; NOTE: encoded-word $B$K8+$($kJ8;zNs$G(B + $B$,(B 3$BG\A}$5$l$k$N$O(B charset $B$N(B +;; $B@hF,$@$1$G$"$j!"(Bencoding $B$d(B encoded-text $B$O$?$H$((B + $B$,F~$C$F$$$F$b(B +;; $BJQ2=$7$J$$!#$^$?!"(Bcharset $BCf$G$b(B $B@hF,0J30$N(B + $B$OJQ2=$7$J$$!#(B +;; +;; NOTE: charset $B$H(B encoding $B$K$O(B = $B$O4^$^$l$J$$$N$G(B 1$BJ8;z0J>e=E$J$k$3(B +;; $B$H$O$J$$!#(B +;; +;; rule 3: $BJ8;zNsA4BN$NFbMF$O!"(Brule 1 $B$H(B rule 2 $B$G2re$J$1$l$P$J$i$J$$$J$I$H$$$&(B +;; $B5,Ls$,$"$k$,!"(Bembedded-encoded-word $BI=8=$G$O$=$l$i$O:NMQ$7$J$$!#(B +;; $BC1=c$K(B encoded-word $BFbIt$NJ8K!$@$1$r(B($B=$@5$7$F(B)$BMxMQ$9$k!#(B +;; ($BK\$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$N>l9g!"(B=?+++US-ASCII?Q?abcd?= $B$H$7$J$1$l$P$J$i$J$$!#(B +;; +;; $B$3$l$O$H$/$K(B Non ASCII $B3HD%(B RFC822 $B$NCf$K(B embedded-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 +;; embedded-encoded-word $BI=8=$H$O$J$i$J$$$+$bCN$l$J$$!#(B) (decode "Subject: =?Unknown-Charset?B?gqA=?=" -"Subject: =?*Unknown-Charset?B?gqA=?=" -'quoted-encoded-word) +"Subject: =?+Unknown-Charset?B?gqA=?=" +embedded-encoded-word) (decode "Subject: =?US-ASCII?G?H4sIACqUszUAA8tIzcnJBwCGphA2BQAAAA==?=" -"Subject: =?*US-ASCII?G?H4sIACqUszUAA8tIzcnJBwCGphA2BQAAAA==?=" -'quoted-encoded-word) +"Subject: =?+US-ASCII?G?H4sIACqUszUAA8tIzcnJBwCGphA2BQAAAA==?=" +embedded-encoded-word) (decode "Subject: =?US-ASCII?Unknown-Encoding?H4sIAGOUszUAAwtyczYyMDEHAEpvqpIHAAAA?=" -"Subject: =?*US-ASCII?Unknown-Encoding?H4sIAGOUszUAAwtyczYyMDEHAEpvqpIHAAAA?=" -'quoted-encoded-word) +"Subject: =?+US-ASCII?Unknown-Encoding?H4sIAGOUszUAAwtyczYyMDEHAEpvqpIHAAAA?=" +embedded-encoded-word) (decode -"Subject: =?ISO-2022-JP?G?H4sIAGiTszUAA5NWcVIBAhMtaQ0nAGLSaeEMAAAA?= +"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) +"Subject: =?+ISO-2022-JP?G?H4sIAGiTszUAA5NWcVIBAhMtaQ0nAGLSaeEMAAAA?==?+ISO-2022-JP?G?H4sIAH6TszUAA5NWcVIxV3FTyVbxldZwAgAuIikKDgAAAA==?=" +embedded-encoded-word) (decode "Subject: =?Unknown-Charset?B?gqA=?= =?Unknown-Charset?B?gqA=?=" -"Subject: =?*Unknown-Charset?B?gqA=?==?*Unknown-Charset?B?gqA=?=" -'quoted-encoded-word) +"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?=" +embedded-encoded-word) (decode "Subject: =?Unknown-Charset?B?gqA=?= =?Unknown-Charset?B?gqA=?=" -"Subject: =?*Unknown-Charset?B?gqA=?==?*Unknown-Charset?B?gqA=?=" -'quoted-encoded-word) +"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?=" +embedded-encoded-word) (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=?=" -'quoted-encoded-word) +"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?=" +embedded-encoded-word) (decode -"Subject: =?Unknown-Charset?B?gqA=?= - =?Unknown-Charset?B?gqA=?=" -"Subject: =?*Unknown-Charset?B?gqA=?==?*Unknown-Charset?B?gqA=?=" -'quoted-encoded-word) +"Subject: =?Unknown-Charset?B?gqA=?=\r +\t=?Unknown-Charset?B?gqA=?=" +"Subject: =?+Unknown-Charset?B?gqA=?==?+Unknown-Charset?B?gqA=?=" +embedded-encoded-word) (decode "Subject: a=?Unknown-Charset?B?gqA=?=" "Subject: a=?Unknown-Charset?B?gqA=?=" -'quoted-encoded-word) +embedded-encoded-word) (decode "Subject: =?Unknown-Charset?B?gqA=?=b" "Subject: =?Unknown-Charset?B?gqA=?=b" -'quoted-encoded-word) +embedded-encoded-word) (decode "Subject: a=?Unknown-Charset?B?gqA=?=b" "Subject: a=?Unknown-Charset?B?gqA=?=b" -'quoted-encoded-word) +embedded-encoded-word) (decode "Subject: a =?Unknown-Charset?B?gqA=?= b" -"Subject: a =?*Unknown-Charset?B?gqA=?= b" -'quoted-encoded-word) +"Subject: a =?+Unknown-Charset?B?gqA=?= b" +embedded-encoded-word) (decode "Subject: =?ISO-2022-JP?B?DQoNCg==?=" -"Subject: =?*US-ASCII?Q?=0D=0A=0D=0A?=" -'quoted-encoded-word) +"Subject: =?+US-ASCII?Q?=0D=0A=0D=0A?=" +embedded-encoded-word) (decode "Subject: =?US-ASCII?Q?a=0D=0A_b?=" -"Subject: a=?*US-ASCII?Q?=0D=0A?= b" -'quoted-encoded-word) +"Subject: a b" +embedded-encoded-word) (decode "Subject: =?US-ASCII?Q?a=0D=0Ab?=" -"Subject: a=?*US-ASCII?Q?=0D=0A?=b" -'quoted-encoded-word) +"Subject: a=?+US-ASCII?Q?=0D=0A?=b" +embedded-encoded-word) + +(decode +"From: =?+C?Q?abcdef?= " +"From: =?++++C?Q?abcdef?= " +embedded-encoded-word) + +(decode +"From: \"=?+C?Q?abcdef?=\" " +"From: \"=?+++C?Q?abcdef?=\" " +embedded-encoded-word) + +(decode +"From: =?C?Q?abc?= =?US-ASCII?Q?=2E?= " +"From: \"=?+C?Q?abc?=.\" " +embedded-encoded-word) + +;;; Section 8: CR and LF. + +(decode +"From: akr@jaist.ac.jp (\r\\\n)" +"From: akr@jaist.ac.jp (\r\\\n)") + +(decode +"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= =?US-ASCII?Q?a?=)" +"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= a)") + +(decode +"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A_?=)" +"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A_?=)") + +(decode +"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A=09?=)" +"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A=09?=)") -;;;end-test;;; +(decode +"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= )" +"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?= )") -(report) +(decode +"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?=\t)" +"From: akr@jaist.ac.jp (\r=?US-ASCII?Q?=0A?=\t)") + +(decode +"From: akr@jaist.ac.jp (\\\r\\\n)" +"From: akr@jaist.ac.jp (\\\r\\\n)") + +(decode +"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?= =?US-ASCII?Q?a?=)" +"From: akr@jaist.ac.jp (=?+US-ASCII?Q?=0D=0A?=a)" +embedded-encoded-word) + +(decode +"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0Aa?=)" +"From: akr@jaist.ac.jp (=?+US-ASCII?Q?=0D=0A?=a)" +embedded-encoded-word) + +(decode +"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A_?=)" +"From: akr@jaist.ac.jp (\\ )") + +(decode +"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A=09?=)" +"From: akr@jaist.ac.jp (\\\t)") + +(decode +"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?= )" +"From: akr@jaist.ac.jp (\\ )") + +(decode +"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?=\t)" +"From: akr@jaist.ac.jp (\\\t)") + +(decode +"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?=\r + =?US-ASCII?Q?=0D=0A?= =?US-ASCII?Q?a?=)" +"From: akr@jaist.ac.jp (=?+US-ASCII?Q?=0D=0A=0D=0A?=a)" +embedded-encoded-word) + +(decode +"From: akr@jaist.ac.jp (\\\r=?US-ASCII?Q?=0A?=\r + =?US-ASCII?Q?=0D?=\\\n =?US-ASCII?Q?a?=)" +"From: akr@jaist.ac.jp (=?+US-ASCII?Q?=0D=0A?=\r\\ + a)" +embedded-encoded-word) + +)) ;---------------------------------------------------------------------------- + +;;; test driver. + +(defun report (decoder encoder &optional verbose) + (let ((pats test-patterns) pat src dsts opts dst + (decode-success 0) + (decode-failure 0) + (decode-error 0) + (decode-giveup 0) + (encode-success 0) + (encode-failure 0) + (encode-error 0) + (encode-giveup 0)) + (while pats + (setq pat (car pats) + src (nth 1 pat) + dsts (nth 2 pat) + opts (nthcdr 3 pat) + pats (cdr pats)) + (if (stringp dsts) (setq dsts (list dsts))) + (cond + ((eq (car pat) 'decode) + (condition-case err + (progn + (setq dst (apply decoder src opts)) + (if dst + (if (member dst dsts) + (progn + (if verbose (message "decode-success: %S" pat)) + (setq decode-success (1+ decode-success))) + (progn + (if verbose (message "decode-failure: %S %S" pat dst)) + (setq decode-failure (1+ decode-failure)))) + (progn + (if verbose (message "decode-giveup: %S" pat)) + (setq decode-giveup (1+ decode-giveup))))) + (error + (if verbose (message "decode-error: %S %S" err pat)) + (setq decode-error (1+ decode-error))))) + ((eq (car pat) 'encode) + (condition-case err + (progn + (setq dst (apply encoder src opts)) + (if dst + (if (member dst dsts) + (progn + (if verbose (message "encode-success: %S" pat)) + (setq encode-success (1+ encode-success))) + (progn + (if verbose (message "encode-failure: %S %S" pat dst)) + (setq encode-failure (1+ encode-failure)))) + (progn + (if verbose (message "encode-giveup: %S" pat)) + (setq encode-giveup (1+ encode-giveup))))) + (error + (if verbose (message "encode-error: %S %S" err pat)) + (setq encode-error (1+ encode-error))))) + (t + (message "pattern error: %S" pat)))) + (message "\ +decode %d patterns: + success: %d + failure: %d + error: %d + giveup: %d +encode %d patterns: + success: %d + failure: %d + error: %d + giveup: %d" + (+ decode-success decode-failure decode-error decode-giveup) + decode-success decode-failure decode-error decode-giveup + (+ encode-success encode-failure encode-error encode-giveup) + encode-success encode-failure encode-error encode-giveup)))