diff -Nru libmime-encwords-perl-1.012.4/Changes libmime-encwords-perl-1.014.2/Changes --- libmime-encwords-perl-1.012.4/Changes 2011-10-26 06:17:02.000000000 +0000 +++ libmime-encwords-perl-1.014.2/Changes 2013-08-26 15:55:32.000000000 +0000 @@ -1,194 +1,213 @@ -2011-10-26 Hatuka*nezumi - IKEDA Soji +Revision history for Perl module MIME::EncWords - * Release 1.012.4. - * Chg: encode_mimewords(): 'B' was advantageous over 'Q' by 4/3 byte - on average... - * Updated address of FSF. - -2011-06-05 Hatuka*nezumi - IKEDA Soji - - * Release 1.012.3. - * Fix: encode_mimewords(): inproper handling of Encoding => 'S'. - * Imp: decode_mimewords(): Broken "Q" encoding also warned: "=" not - leading two hexdigits (raw " " and "\t" are allowed). - * Imp: encode_mimewords(): negative MaxLineLen allows unlimited length - of line. - * Encode::MIME::EncWords: Rewritten. 0.03. - - Any newlines not forming folding white space are preserved. - cf. CPAN RT #68582 for standard encodings. - - Error handling. - * Doc: typos etc. - -2011-06-01 Hatuka*nezumi - IKEDA Soji - - * Release 1.012.2. - * Chg: encode_mimewords(): By 'A' or 'S' encodings, 'Q' will be used - more often: When number of bytes to be encoded exceeds 6th of - entire bytes, words may be encoded by 'B'. In other words, - ``S encoding'' is to choose shorter one of 'B' or 'Q' according to - length of maximally-encoded result. - * Fix: encode_mimewords(): Pure ASCII words containing unsafe sequence - ignored Encoding option; encoded by header_encoding() of its charset. - * Updated Encode::MIME::EncWords. - * Added test #03 & #04. Added UTF-8 cases to #02. - -2011-05-29 Hatuka*nezumi - IKEDA Soji - - * Release 1.012.1. - * Unicode/multibyte support on Perl 5.7.3 (experimental). - * New: Encode::MIME::EncWords [alpha release] - Encode module for - "MIME-EncWords", "MIME-EncWords-B", "MIME-EncWords-Q" and - "MIME-EncWords-ISO_2022_JP". - * Requires MIME::Charset >= 1.008.2. - -2010-06-17 Hatuka*nezumi - IKEDA Soji - - * Release 1.012. - * encode_mimewords(): New option Minimal => 'DISPNAME' to help - encoding RFC5322 name-addr. - -2009-06-16 Hatuka*nezumi - IKEDA Soji - - * Release 1.011.1 - no new features. - * Fix: Perl <= 5.6.x - skip tests with older POD::Simple. - * MIME::Charset >= 1.007.1 is required. - -2009-05-17 Hatuka*nezumi - IKEDA Soji - - * Release 1.011 - not really released. - -2009-05-11 Hatuka*nezumi - IKEDA Soji - - * Release 1.011_01 - no new features. - * Supports Perl 5.8.0. - * MIME::Charset >= 1.007 is required. - -2008-04-19 Hatuka*nezumi - IKEDA Soji - - * Release 1.010.101 - tidinesses only; no new features. - * CPAN RT #34909, #35070 (depends on #35120): - Perl >= 5.8.1 requires MIME::Charset >= 1.006.2. - * Perl 5.11.0: Suppress ``Use of uninitialized value - within @_ in lc'' warnings. - * Perl <= 5.6.2: Suppress ``Useless use of a constant in - void context'' warnings. - * Correct META.yml & MANIFEST. - -2008-04-12 Hatuka*nezumi - IKEDA Soji - - * Release 1.010. - * encode_mimeword(): Restrict characters in encoded-words - according to RFC 2047 section 5 (3). - Note: length(encode_mimeword()) may not be equal to - encoded_header_len() of MIME::Charset 1.004 or earlier. - * Bug Fix: Texts with ``US-ASCII transformation'' charsets, - HZ-GB-2312 (RFC 1842) and UTF-7 (RFC 2152), were treated - as US-ASCII. - * Fix: encoded-words exceeding line length can be generated. - * encode_mimewords(): Improved encoding of unsafe ASCII - sequences (words exceeding line length or including ``=?''). - * encode_mimeword(): can take charset object argument. - In this case RAW can be Unicode string. - * Modified / added tests for multibyte / singlebyte / unsafe - ASCII. - -2008-03-30 Hatuka*nezumi - IKEDA Soji - - * Release 1.009. - * Bug Fix: Perl <=5.6.x: encode_mimewords(): ASCII words - are encoded. - * Bug Fix: Perl <=5.005: our is ``deprecated''. - -2008-03-21 Hatuka*nezumi - IKEDA Soji - - * Release 1.007. - * encode_mimewords(): New option 'Folding' defaults to - be "\n" which may break conformance to RFC 2822 / MIME. - * Improve handling of linear-white-spaces: preserve - multiple whitespace sequences. - * Fix: decode_mimewords(): excessive spaces are inserted - on pre-Encode environments (e.g. 5.6.x). - * Fix: decode_mimewords(): no 'Charset' option must be - no conversion to keep compatible with MIME::Words. - * Remove multibyte tests on pre-Encode environments - where it cannot be supported exactly. - * Restructured processing of option parameters. - * Added tests for decoding multibyte and encoding singlebyte. - -2008-03-16 Hatuka*nezumi - IKEDA Soji - - * Release 1.005. - * Fix: Injected bug on _UNICODE_ conversion. - * Fix: decode_mimewords(): line folding of encoded text - is preserved in the result. - -2008-03-16 Hatuka*nezumi - IKEDA Soji - - * Release 1.004 - withdrawn. - * By this release we require OO interface of MIME::Charset - 1.001 or later. - * Fix: encode_mimewords(): Newlines were encoded when - original text includes them. - * New feature: MIME/EncWords/Defaults.pm: If it exists, - built-in defaults for option parameters of methods can be - overridden. - * encode_mimewords(): Built-in default for "Encoding" - option has been changed from "Q" to "A". - * encode_mimewords(): New option "MaxLineLen" which defaults - to be 76, and "Mapping" which defaults to be "EXTENDED". - * decode_mimewords(): New option "Mapping" which defaults - to be "EXTENDED". - * Added tests for multibyte. - * Clean-up PODs and codes. - -2008-03-14 Hatuka*nezumi - IKEDA Soji - - * Release 1.003. - * encode_mimewords(): Fix: Minimal option won't affect when Encoding - options is not "A". - * decode_mimewords(): Support RFC 2231 section 5 extension. - -2008-03-08 Hatuka*nezumi - IKEDA Soji - - * Release 1.000. - * decode_mimewords(): New option 'Detect7bit', enabled by default. - * encode_mimewords(): New option 'Replacement. - -2006-11-16 Hatuka*nezumi - IKEDA Soji - - * Release 0.040. - * encode_mimewords(): New option 'Minimal' to control - minimal encoding behavior. - NOTE: Default behavior was changed from "NO" to "YES". - -2006-10-22 Hatuka*nezumi - IKEDA Soji - - * Release 0.032. - * More documentation changes. - -2006-10-20 Hatuka*nezumi - IKEDA Soji - - * Release 0.03.1 (not really released). - * Documentation changes only: Note on modifications, clarifications - about compatibility with MIME::Words. - -2006-10-17 Hatuka*nezumi - IKEDA Soji - - * Release 0.03. - * decode_mimewords: allow Unicode input. - * decode_mimewords: don't collapse spaces between '?='...'=?'. - * Bug fix: cannot encode null string. - * Handle wide characters exactly. - * Change die to croak. - -2006-10-13 Hatuka*nezumi - IKEDA Soji - - * Release 0.02. - * decode_mimewords: Fix bug about default charset. - * Supports Perl 5.005 or later. - Unicode/multibyte handling will be enabled on Perl 5.8.1 or later. - * Added test cases for encode_mimewords (only for singlebyte). +1.014.2 2013-08-26 Hatuka*nezumi - IKEDA Soji -2006-10-11 Hatuka*nezumi - IKEDA Soji + * No new features. + * Reformat Changes file: CPAN RT#88096. - * Release 0.01; Initial CPAN upload. +1.014.1 2013-08-25 Hatuka*nezumi - IKEDA Soji + + * No new features. + * Move Japanese documentations under POD2::JA. + +1.014 2013-04-27 Hatuka*nezumi - IKEDA Soji + + * No changes. + +1.013_02 2013-04-14 Hatuka*nezumi - IKEDA Soji + + * Fix: CPAN RT#84295: MaxLineLen fixes to the value set at the first + time. + * Imp: encode_mimewords() supports UTF-16, UTF-32 and their flavors. + They will be encoded as UTF-8. + * Requires MIME-Charset >= 1.010. + +1.012.6 2012-10-01 Hatuka*nezumi - IKEDA Soji + + * No changes. + +1.012_5 2012-09-05 Hatuka*nezumi - IKEDA Soji + + * Minor Fix: After ASCII words extending over multiple lines, + line length was estimated shorter. CPAN RT #79399. + * Doc: corrected typo. + +1.012.4 2011-10-26 Hatuka*nezumi - IKEDA Soji + + * Chg: encode_mimewords(): 'B' was advantageous over 'Q' by 4/3 byte + on average... + * Updated address of FSF. + +1.012.3 2011-06-05 Hatuka*nezumi - IKEDA Soji + + * Fix: encode_mimewords(): inproper handling of Encoding => 'S'. + * Imp: decode_mimewords(): Broken "Q" encoding also warned: "=" not + leading two hexdigits (raw " " and "\t" are allowed). + * Imp: encode_mimewords(): negative MaxLineLen allows unlimited length + of line. + * Encode::MIME::EncWords: Rewritten. 0.03. + - Any newlines not forming folding white space are preserved. + cf. CPAN RT #68582 for standard encodings. + - Error handling. + * Doc: typos etc. + +1.012.2 2011-06-01 Hatuka*nezumi - IKEDA Soji + + * Chg: encode_mimewords(): By 'A' or 'S' encodings, 'Q' will be used + more often: When number of bytes to be encoded exceeds 6th of + entire bytes, words may be encoded by 'B'. In other words, + ``S encoding'' is to choose shorter one of 'B' or 'Q' according to + length of maximally-encoded result. + * Fix: encode_mimewords(): Pure ASCII words containing unsafe sequence + ignored Encoding option; encoded by header_encoding() of its charset. + * Updated Encode::MIME::EncWords. + * Added test #03 & #04. Added UTF-8 cases to #02. + +1.012.1 2011-05-29 Hatuka*nezumi - IKEDA Soji + + * Unicode/multibyte support on Perl 5.7.3 (experimental). + * New: Encode::MIME::EncWords [alpha release] - Encode module for + "MIME-EncWords", "MIME-EncWords-B", "MIME-EncWords-Q" and + "MIME-EncWords-ISO_2022_JP". + * Requires MIME::Charset >= 1.008.2. + +1.012 2010-06-17 Hatuka*nezumi - IKEDA Soji + + * encode_mimewords(): New option Minimal => 'DISPNAME' to help + encoding RFC5322 name-addr. + +1.011.1 2009-06-16 Hatuka*nezumi - IKEDA Soji + + * no new features. + * Fix: Perl <= 5.6.x - skip tests with older POD::Simple. + * MIME::Charset >= 1.007.1 is required. + +1.011 2009-05-17 Hatuka*nezumi - IKEDA Soji + + * not really released. + +1.011_01 2009-05-11 Hatuka*nezumi - IKEDA Soji + + * no new features. + * Supports Perl 5.8.0. + * MIME::Charset >= 1.007 is required. + +1.010.101 2008-04-19 Hatuka*nezumi - IKEDA Soji + + * tidinesses only; no new features. + * CPAN RT #34909, #35070 (depends on #35120): + Perl >= 5.8.1 requires MIME::Charset >= 1.006.2. + * Perl 5.11.0: Suppress ``Use of uninitialized value + within @_ in lc'' warnings. + * Perl <= 5.6.2: Suppress ``Useless use of a constant in + void context'' warnings. + * Correct META.yml & MANIFEST. + +1.010 2008-04-12 Hatuka*nezumi - IKEDA Soji + + * encode_mimeword(): Restrict characters in encoded-words + according to RFC 2047 section 5 (3). + Note: length(encode_mimeword()) may not be equal to + encoded_header_len() of MIME::Charset 1.004 or earlier. + * Bug Fix: Texts with ``US-ASCII transformation'' charsets, + HZ-GB-2312 (RFC 1842) and UTF-7 (RFC 2152), were treated + as US-ASCII. + * Fix: encoded-words exceeding line length can be generated. + * encode_mimewords(): Improved encoding of unsafe ASCII + sequences (words exceeding line length or including ``=?''). + * encode_mimeword(): can take charset object argument. + In this case RAW can be Unicode string. + * Modified / added tests for multibyte / singlebyte / unsafe + ASCII. + +1.009 2008-03-30 Hatuka*nezumi - IKEDA Soji + + * Bug Fix: Perl <=5.6.x: encode_mimewords(): ASCII words + are encoded. + * Bug Fix: Perl <=5.005: our is ``deprecated''. + +1.007 2008-03-21 Hatuka*nezumi - IKEDA Soji + + * encode_mimewords(): New option 'Folding' defaults to + be "\n" which may break conformance to RFC 2822 / MIME. + * Improve handling of linear-white-spaces: preserve + multiple whitespace sequences. + * Fix: decode_mimewords(): excessive spaces are inserted + on pre-Encode environments (e.g. 5.6.x). + * Fix: decode_mimewords(): no 'Charset' option must be + no conversion to keep compatible with MIME::Words. + * Remove multibyte tests on pre-Encode environments + where it cannot be supported exactly. + * Restructured processing of option parameters. + * Added tests for decoding multibyte and encoding singlebyte. + +1.005 2008-03-16 Hatuka*nezumi - IKEDA Soji + + * Fix: Injected bug on _UNICODE_ conversion. + * Fix: decode_mimewords(): line folding of encoded text + is preserved in the result. + +1.004 2008-03-16 Hatuka*nezumi - IKEDA Soji + + * withdrawn. + * By this release we require OO interface of MIME::Charset + 1.001 or later. + * Fix: encode_mimewords(): Newlines were encoded when + original text includes them. + * New feature: MIME/EncWords/Defaults.pm: If it exists, + built-in defaults for option parameters of methods can be + overridden. + * encode_mimewords(): Built-in default for "Encoding" + option has been changed from "Q" to "A". + * encode_mimewords(): New option "MaxLineLen" which defaults + to be 76, and "Mapping" which defaults to be "EXTENDED". + * decode_mimewords(): New option "Mapping" which defaults + to be "EXTENDED". + * Added tests for multibyte. + * Clean-up PODs and codes. + +1.003 2008-03-14 Hatuka*nezumi - IKEDA Soji + + * encode_mimewords(): Fix: Minimal option won't affect when Encoding + options is not "A". + * decode_mimewords(): Support RFC 2231 section 5 extension. + +1.000 2008-03-08 Hatuka*nezumi - IKEDA Soji + + * decode_mimewords(): New option 'Detect7bit', enabled by default. + * encode_mimewords(): New option 'Replacement. + +0.040 2006-11-16 Hatuka*nezumi - IKEDA Soji + + * encode_mimewords(): New option 'Minimal' to control + minimal encoding behavior. + NOTE: Default behavior was changed from "NO" to "YES". + +0.032 2006-10-22 Hatuka*nezumi - IKEDA Soji + + * More documentation changes. + +0.03.1 2006-10-20 Hatuka*nezumi - IKEDA Soji + + * not really released + * Documentation changes only: Note on modifications, clarifications + about compatibility with MIME::Words. + +0.03 2006-10-17 Hatuka*nezumi - IKEDA Soji + + * decode_mimewords: allow Unicode input. + * decode_mimewords: don't collapse spaces between '?='...'=?'. + * Bug fix: cannot encode null string. + * Handle wide characters exactly. + * Change die to croak. + +0.02 2006-10-13 Hatuka*nezumi - IKEDA Soji + + * decode_mimewords: Fix bug about default charset. + * Supports Perl 5.005 or later. + Unicode/multibyte handling will be enabled on Perl 5.8.1 or later. + * Added test cases for encode_mimewords (only for singlebyte). + +0.01 2006-10-11 Hatuka*nezumi - IKEDA Soji + + * Initial CPAN upload. diff -Nru libmime-encwords-perl-1.012.4/MANIFEST libmime-encwords-perl-1.014.2/MANIFEST --- libmime-encwords-perl-1.012.4/MANIFEST 2011-10-26 06:17:02.000000000 +0000 +++ libmime-encwords-perl-1.014.2/MANIFEST 2013-08-26 15:55:32.000000000 +0000 @@ -2,10 +2,10 @@ Changes GPL lib/Encode/MIME/EncWords.pm -lib/Encode/MIME/EncWords/JA_JP.pod lib/MIME/EncWords.pm lib/MIME/EncWords/Defaults.pm.sample -lib/MIME/EncWords/JA_JP.pod +lib/POD2/JA/Encode/MIME/EncWords.pod +lib/POD2/JA/MIME/EncWords.pod Makefile.PL MANIFEST This list of files META.yml Module meta-data (added by author) @@ -14,6 +14,7 @@ t/02encode.t t/03Encode-MIME-EncWords.t t/04Encode-MIME-EncWords-ISO_2022_JP.t +t/05encode_utf.t t/pod.t testin/decode-ascii.txt testin/decode-multibyte.txt diff -Nru libmime-encwords-perl-1.012.4/META.yml libmime-encwords-perl-1.014.2/META.yml --- libmime-encwords-perl-1.012.4/META.yml 2011-10-26 06:17:02.000000000 +0000 +++ libmime-encwords-perl-1.014.2/META.yml 2013-08-26 15:55:32.000000000 +0000 @@ -1,7 +1,7 @@ --- #YAML:1.0 name: MIME-EncWords abstract: deal with RFC 2047 encoded words (improved) -version: 1.012.4 +version: 1.014.2 author: - Hatuka*nezumi - IKEDA Soji license: perl @@ -9,14 +9,14 @@ requires: Encode: 1.98 MIME::Base64: 2.13 - MIME::Charset: 1.008.2 + MIME::Charset: 1.010.1 perl: 5.005 build_requires: Test::More: 0 provides: MIME::EncWords: file: lib/MIME/EncWords.pm - version: 1.012.4 + version: 1.014.2 Encode::MIME::EncWords: file: lib/Encode/MIME/EncWords.pm version: 0.03 diff -Nru libmime-encwords-perl-1.012.4/Makefile.PL libmime-encwords-perl-1.014.2/Makefile.PL --- libmime-encwords-perl-1.012.4/Makefile.PL 2011-10-26 06:17:02.000000000 +0000 +++ libmime-encwords-perl-1.014.2/Makefile.PL 2013-08-26 15:55:32.000000000 +0000 @@ -6,13 +6,14 @@ 'VERSION_FROM' => 'lib/MIME/EncWords.pm', 'PREREQ_PM' => ($] >= 5.007003)? { 'Encode' => 1.98, - 'MIME::Charset' => '1.008.2', + 'MIME::Charset' => '1.010.1', 'MIME::Base64' => 2.13, 'Test::More' => 0, }: { 'MIME::Charset' => '1.006', 'MIME::Base64' => 2.13, 'Test::More' => 0, + 'Unicode::String' => 2.09, }, ); diff -Nru libmime-encwords-perl-1.012.4/README libmime-encwords-perl-1.014.2/README --- libmime-encwords-perl-1.012.4/README 2011-10-26 06:17:02.000000000 +0000 +++ libmime-encwords-perl-1.014.2/README 2013-08-26 15:55:32.000000000 +0000 @@ -1,6 +1,6 @@ MIME-EncWords Package. -Copyright (C) 2006-2011 by Hatuka*nezumi - IKEDA Soji . +Copyright (C) 2006-2013 by Hatuka*nezumi - IKEDA Soji . This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself. @@ -15,7 +15,7 @@ For japonophones, POD in Japanese language is also included: - MIME::EncWords::JA_JP - RFC 2047 encoded-word 関連 (改良版) - Encode::MIME::EncWords::JA_JP - MIME の「B」・「Q」ヘッダエンコーディング (代替案) + POD2::JA::MIME::EncWords - RFC 2047 encoded-word 関連 (改良版) + POD2::JA::Encode::MIME::EncWords - MIME の「B」・「Q」ヘッダエンコーディング (代替案) $$ diff -Nru libmime-encwords-perl-1.012.4/debian/changelog libmime-encwords-perl-1.014.2/debian/changelog --- libmime-encwords-perl-1.012.4/debian/changelog 2011-11-10 18:23:42.000000000 +0000 +++ libmime-encwords-perl-1.014.2/debian/changelog 2013-09-08 21:28:37.000000000 +0000 @@ -1,9 +1,32 @@ -libmime-encwords-perl (1.012.4-1ubuntu1) precise; urgency=low +libmime-encwords-perl (1.014.2-1) unstable; urgency=low - * Pre-Depends: dpkg (>= 1.15.6) for xz compression support. Needed until - after Ubuntu 12.04 LTS. + * Import Upstream version 1.014.2 + * Bump dependency on MIME::Charset - -- Colin Watson Thu, 10 Nov 2011 18:23:41 +0000 + -- Florian Schlichting Sun, 08 Sep 2013 23:28:29 +0200 + +libmime-encwords-perl (1.014-1) unstable; urgency=low + + [ gregor herrmann ] + * debian/control: update {versioned,alternative} (build) dependencies. + + [ Nathan Handler ] + * Email change: Nathan Handler -> nhandler@debian.org + + [ Salvatore Bonaccorso ] + * Change Vcs-Git to canonical URI (git://anonscm.debian.org) + * Change search.cpan.org based URIs to metacpan.org based URIs + + [ Florian Schlichting ] + * Import Upstream version 1.014 + * Bump years of upstream copyright + * Bump the dependency on libmime-charset-perl to 1.010 + * Bump Standards-Version to 3.9.4 (update to copyright-format 1.0) + * Remove dh_builddeb -- -Zxz from debian/rules, xz compression is now the + default + * Add myself to uploaders and copyright + + -- Florian Schlichting Sun, 18 Aug 2013 21:51:38 +0200 libmime-encwords-perl (1.012.4-1) unstable; urgency=low diff -Nru libmime-encwords-perl-1.012.4/debian/control libmime-encwords-perl-1.014.2/debian/control --- libmime-encwords-perl-1.012.4/debian/control 2011-11-10 18:23:43.000000000 +0000 +++ libmime-encwords-perl-1.014.2/debian/control 2013-09-08 21:27:43.000000000 +0000 @@ -1,24 +1,30 @@ Source: libmime-encwords-perl +Maintainer: Debian Perl Group +Uploaders: Micah Anderson , + Damyan Ivanov , + gregor herrmann , + Rene Mayorga , + Ryan Niebur , + Nathan Handler , + Jonathan Yu , + Ansgar Burchardt , + Fabrizio Regalli , + Florian Schlichting Section: perl Priority: optional Build-Depends: debhelper (>= 8) -Build-Depends-Indep: libmime-charset-perl (>= 1.008.2), libtest-pod-perl -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Debian Perl Group -Standards-Version: 3.9.2 -Homepage: http://search.cpan.org/dist/MIME-EncWords/ -Vcs-Git: git://git.debian.org/pkg-perl/packages/libmime-encwords-perl.git +Build-Depends-Indep: libmime-charset-perl (>= 1.010.1), + libtest-pod-perl +Standards-Version: 3.9.4 Vcs-Browser: http://anonscm.debian.org/gitweb/?p=pkg-perl/packages/libmime-encwords-perl.git -Uploaders: Micah Anderson , Damyan Ivanov , - gregor herrmann , Rene Mayorga , - Ryan Niebur , Nathan Handler , - Jonathan Yu , Ansgar Burchardt , - Fabrizio Regalli +Vcs-Git: git://anonscm.debian.org/pkg-perl/packages/libmime-encwords-perl.git +Homepage: https://metacpan.org/release/MIME-EncWords/ Package: libmime-encwords-perl Architecture: all -Pre-Depends: dpkg (>= 1.15.6) -Depends: ${misc:Depends}, ${perl:Depends}, libmime-charset-perl (>= 1.008.2) +Depends: ${misc:Depends}, + ${perl:Depends}, + libmime-charset-perl (>= 1.010.1) Description: Perl interface to deal with RFC 2047 encoded words MIME::EncWords is a module providing several utilities to encode and decode arbitrary text in RFC 2047 (formerly RFC 1522) format. The MIME standard gives @@ -33,3 +39,4 @@ while having stricter conformance to the aforementioned RFCs. It provides more flexibility than MIME::WordDecoder because characters can be mapped into any desired encoding, rather than simply the local system representation. + diff -Nru libmime-encwords-perl-1.012.4/debian/copyright libmime-encwords-perl-1.014.2/debian/copyright --- libmime-encwords-perl-1.012.4/debian/copyright 2011-10-30 11:06:51.000000000 +0000 +++ libmime-encwords-perl-1.014.2/debian/copyright 2013-09-04 22:48:28.000000000 +0000 @@ -1,10 +1,10 @@ -Format-Specification: http://anonscm.debian.org/viewvc/dep/web/deps/dep5.mdwn?view=markup&pathrev=135 -Maintainer: IKEDA Soji -Source: http://search.cpan.org/dist/MIME-EncWords/ -Name: MIME-EncWords +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: MIME-EncWords +Upstream-Contact: IKEDA Soji +Source: https://metacpan.org/release/MIME-EncWords/ Files: * -Copyright: 2006-2011, IKEDA Soji +Copyright: 2006-2013, IKEDA Soji License: Artistic or GPL-1+ Files: debian/* @@ -15,6 +15,7 @@ 2008, Damyan Ivanov 2007, Micah Anderson 2011, Fabrizio Regalli + 2013, Florian Schlichting License: Artistic or GPL-1+ License: Artistic diff -Nru libmime-encwords-perl-1.012.4/debian/rules libmime-encwords-perl-1.014.2/debian/rules --- libmime-encwords-perl-1.012.4/debian/rules 2011-10-30 11:07:23.000000000 +0000 +++ libmime-encwords-perl-1.014.2/debian/rules 2013-08-18 19:48:01.000000000 +0000 @@ -2,6 +2,3 @@ %: dh $@ - -override_dh_builddeb: - dh_builddeb -- -Zxz diff -Nru libmime-encwords-perl-1.012.4/debian/watch libmime-encwords-perl-1.014.2/debian/watch --- libmime-encwords-perl-1.012.4/debian/watch 2011-10-30 11:03:26.000000000 +0000 +++ libmime-encwords-perl-1.014.2/debian/watch 2013-01-27 17:56:33.000000000 +0000 @@ -1,2 +1,2 @@ version=3 -http://search.cpan.org/dist/MIME-EncWords/ .*/MIME-EncWords-v?(\d[\d.]+)\.(?:tar(?:\.gz|\.bz2)?|tgz|zip) +https://metacpan.org/release/MIME-EncWords/ .*/MIME-EncWords-v?(\d[\d.]+)\.(?:tar(?:\.gz|\.bz2)?|tgz|zip) diff -Nru libmime-encwords-perl-1.012.4/lib/Encode/MIME/EncWords/JA_JP.pod libmime-encwords-perl-1.014.2/lib/Encode/MIME/EncWords/JA_JP.pod --- libmime-encwords-perl-1.012.4/lib/Encode/MIME/EncWords/JA_JP.pod 2011-10-26 06:17:02.000000000 +0000 +++ libmime-encwords-perl-1.014.2/lib/Encode/MIME/EncWords/JA_JP.pod 1970-01-01 00:00:00.000000000 +0000 @@ -1,160 +0,0 @@ -use utf8; - -=encoding utf-8 - -=head1 NAME - -Encode::MIME::EncWords::JA_JP - MIME の「B」・「Q」ヘッダエンコーディング (代替案) - -=head1 SYNOPSIS - - use Encode::MIME::EncWords; - use Encode qw/encode decode/; - - # ヘッダデコードする。 - $utf8 = decode('MIME-EncWords', $header); - - # 初期のキャラクタセット (UTF-8) でヘッダエンコードする。 - $header = encode('MIME-EncWords', $utf8); - - # ほかのキャラクタセットでヘッダエンコードする。 - Encode::MIME::EncWords->config(Charset => 'GB2312'); - $header = encode('MIME-EncWords', $utf8); - -=head1 ABSTRACT - -このモジュールは、RFC 2047 に述べる -MIME のヘッダエンコーディングを実装している。 -エンコーディングの名前には、みっつの変種と、 -キャラクタセットに特化したひとつの簡易版がある。 - - エンコーディング名 encode() の結果 備考 - ------------------------------------------------------------------ - MIME-EncWords (B と Q を自動判別) - MIME-EncWords-B =?XXXX?B?...?= 初期値は UTF-8。 - MIME-EncWords-Q =?XXXX?Q?...?= ,, - MIME-EncWords-ISO_2022_JP =?ISO-2022-JP?B?...?= - -decode() の結果は、どのエンコーディングでも同じになる。 - -=head1 DESCRIPTION - -このモジュールは、L コアモジュールが提供する -C エンコーディングの代替となることを意図している。 -このモジュールの使いかたをよく知るためには、L を参照してほしい。 - -=head2 モジュール独自の機能 - -=over 4 - -=item config(KEY => VALUE, ...); - -I<クラスメソッド。> -KEY => VALUE の対でオプションを設定する。 -次のオプションが使える。 - -=over 4 - -=item Charset - -[encode] データ要素を変換するのに使うキャラクタセット。 -初期値は C<"UTF-8">。 -C では C<"ISO-2022-JP"> に固定。 - -=item Detect7bit - -[decode/encode] エンコードされていない部分の -7 ビットキャラクタセットを判別しようとする。 -初期値は C<"YES">。 - -=item Field - -[encode] ヘッダフィールドの名前。エンコードされた結果の最初の行で、 -これの長さが考慮される。 -初期値は C。 - -=item Mapping - -[decode/encode] キャラクタセットの名前に対して実際に使うマッピングを指定する。 -初期値は C<"EXTENDED">。 - -=item MaxLineLen - -[encode] 行の最大長 (改行を除く)。 -初期値は C<76>。 - -=item Minimal - -[encode] エンコーディングを最小限にするか否か。 -初期値は C<"YES">。 - -=back - -オプションの詳細については L を参照。 - -=back - -=head1 CAVEAT - -=over 4 - -=item * - -MIME ヘッダエンコーディング用のエンコーディングモジュールは、 -こみいったヘッダフィールドを簡単に作り出したり、 -そこから望みの要素を取り出したりできる打ち出の小槌ではない。 - -アドレスヘッダフィールド (To:、From: など) をデコードするには、 -まず mailbox-list を分解する。 -そして、個々の要素をエンコーディングモジュールでデコードする。 -これをエンコードするには、 -今度は個々の要素をエンコーディングモジュールでエンコードする。 -そして、エンコードした要素から mailbox-list を組み立てる。 -mailbox-list の組み立てや分解には、L -のようなモジュールが使えるだろう。 - -=item * - -行を LF (C<"\n">) で区切る。 -RFC5322 は、インターネットのメッセージでは行を CRLF (C<"\r\n">) -で区切るとしている。 - -=back - -=head1 BUGS - -バグやバグのような動作は開発者に知らせてください。 - -CPAN Request Tracker: -L. - -=head1 VERSION - -C<$VERSION> 変数を参照してほしい。 - -B<これは実験的なリリースである>。仕様は近い将来、変わるかもしれない。 - -このパッケージの開発版が次の場所にある。 -L。 - -=head1 SEE ALSO - -L, L, L. - -RFC 2047 I. - -=head1 AUTHOR - -Hatuka*nezumi - IKEDA Soji - -=head1 COPYRIGHT - -Copyright (C) 2011 Hatuka*nezumi - IKEDA Soji. - -This program is free software; you can redistribute it and/or modify it -under the same terms as Perl itself. - - -=cut - diff -Nru libmime-encwords-perl-1.012.4/lib/MIME/EncWords/JA_JP.pod libmime-encwords-perl-1.014.2/lib/MIME/EncWords/JA_JP.pod --- libmime-encwords-perl-1.012.4/lib/MIME/EncWords/JA_JP.pod 2011-10-26 06:17:02.000000000 +0000 +++ libmime-encwords-perl-1.014.2/lib/MIME/EncWords/JA_JP.pod 1970-01-01 00:00:00.000000000 +0000 @@ -1,367 +0,0 @@ -=encoding utf-8 - -=head1 NAME - -MIME::EncWords::JA_JP - RFC 2047 encoded-word 関連 (改良版) - -=head1 SYNOPSIS - -I は、RFC 2047 (旧 RFC 1522) -の仕様により適合することをめざした L の別実装です。 -加えて、いくらかの改良がなされています。 -以下の梗概と説明は、もとの MIME::Words から採ったものに、 -改良点の説明 (B<**>) および変更点の説明と明確化 (B<*>) -を加えたものです。> - -読み進める前に、L を見るべきだ。そうして、 -あなたの成し遂げようとしていることのどこでこのモジュールを使うのかを、 -理解してほしい。 -いますぐ。待ってるから。 - -いいかな。はじめるよ... - - use MIME::EncWords qw(:all); - - ### 文字列を、キャラクタセットは無視してデコードした文字列にする: - $decoded = decode_mimewords( - 'To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= ', - ); - - ### 文字列を、デコードされた [DATA,CHARSET] の対の配列にする: - @decoded = decode_mimewords( - 'To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= ', - ); - - ### 単一の「安全でない語」をエンコードする: - $encoded = encode_mimeword("\xABFran\xE7ois\xBB"); - - ### 文字列を、「安全でない語」を探しながらエンコードする: - $encoded = encode_mimewords("Me and \xABFran\xE7ois\xBB in town"); - -=head1 DESCRIPTION - -合衆国の諸君。このモジュールでいったい何をやらかそうというのか、 -わからないかもしれないね。欧州、ロシア等の諸君なら、わかるだろう。C<(:-)>。 - -たとえば、これは有効な MIME ヘッダだ: - - From: =?US-ASCII?Q?Keith_Moore?= - To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= - CC: =?ISO-8859-1?Q?Andr=E9_?= Pirard - Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?= - =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?= - =?US-ASCII?Q?.._cool!?= - -これらのフィールドは、だいたいつぎのようにデコードできる: - - From: Keith Moore - To: Keld Jørn Simonsen - CC: André Pirard - Subject: If you can read this you understand the example... cool! - -B<追補>: 合衆国、欧州の諸君。 -このモジュールでいったいなにをやらかそうというのか、 -わからないかもしれないね。東アジア等の諸君なら、わかるだろう。 -C<(^_^)>. - -たとえば、これは有効な MIME ヘッダだ: - - Subject: =?EUC-KR?B?sNTAuLinKGxhemluZXNzKSwgwvzB9ri7seIoaW1w?= - =?EUC-KR?B?YXRpZW5jZSksILGzuLgoaHVicmlzKQ==?= - -これらのフィールドは、だいたいつぎのようにデコードできる: - - Subject: 게으름(laziness), 참지말기(impatience), 교만(hubris) - -=head1 PUBLIC INTERFACE - -=over 4 - - -=cut - -=item decode_mimewords ENCODED, [OPTS...] - -I<関数>。 -文字列から RFC 2047 スタイルの "Q" エンコーディング -(quoted-printable の一種) や "B" エンコーディング (base64) -を探し、それをデコードする。 - -B<配列コンテクストでは>、文字列 ENCODED をデコードした -C<[DATA, CHARSET]> の対に分割し、そのリストを返す。 -エンコードされていなかったデータは 1 要素の配列 -C<[DATA]> で返す (CHARSET は実質的に C)。 - - $enc = '=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= '; - foreach (decode_mimewords($enc)) { - print "", ($_[1] || 'US-ASCII'), ": ", $_[0], "\n"; - } - -B<**> -ただし、隣り合う「encoded-word」を、キャラクタセットがおなじなら連結する。 -これは、マルチバイト列を安全に扱えるようにするためである。 - -B<**> -RFC2231 第 5 節で定義している言語情報があれば、第 3 の要素として追加する。 - -B<*> -エンコードされていなかったデータの両端の空白文字は取り去らない。 -これは、L との互換性を保つためである。 - -B<スカラコンテクストでは>、上記のリストの DATA 要素をすべて連結し、 -それを返す。I<注意: 情報の損失がある>ので、 -望んだ結果が得られI<ない>かもしれない。 -だが、文字列 ENCODED -のすべての文字のキャラクタセットが同一だとわかっているのなら、 -これは役に立つこともある。 -(これを使う前に、L を見てほしい。 -これが望みのものかもしれない。) -B<**> -下記の "Charset" も参照。 - -構文エラーが発生すると、$@ にエラーの説明をセットするが、 -解析はできるかぎり (ヘッダのデコードで得られたI<なにか>を返すために) -続行する。 -エラーが見つからなければ、$@ は偽となる。 - -B<*> -「encoded-word」が壊れているときは、エンコードしたままのものを返す。 -この場合、$@ をセットする。 - -ENCODED に引き続く引数は、ハッシュによるオプションの定義とみなす。 -B<**> -Unicode/マルチバイト文字対応が有効になっていないとき -(L 参照) は、 -以下のオプションはなんの効果も持たない。 - -=over 4 - -=item Charset -B<**> - -スカラコンテクストで、DATA 要素をこの名前のキャラクタセットで変換する。 -このオプションに特殊値 C<"_UNICODE_"> を指定すると、 -返す値は Unicode 文字列となる。 - -B: -この仕様は、I を指定したとき以外は>、 -やはり情報の損失がある。 - -=item Detect7bit -B<**> - -エンコードされていなかった部分の 7 ビットキャラクタセットを判別しようとする。 -初期値は C<"YES">。 - - -=cut - -=item Mapping -B<**> - -スカラコンテクストで、 -キャラクタセットの名前に対して実際に使うマッピングを指定する。 -C<"EXTENDED"> は拡張マッピングを使う。 -C<"STANDARD"> は標準化されている厳密なマッピングを使う。 -初期値は C<"EXTENDED">。 - -=back - - -=cut - -=item encode_mimeword RAW, [ENCODING], [CHARSET] - -I<関数>。 -「安全でない」文字のある単一の「語」RAW をエンコードする。 -「語」全体がエンコードされる。 - - ### "«François»" をエンコードする: - $encoded = encode_mimeword("\xABFran\xE7ois\xBB"); - -エンコーディング ENCODING を指定できる (C<"Q"> または C<"B">)。 -初期値は C<"Q">。 -B<**> -さらに、「特殊」な値も指定できる。 -C<"S"> は C<"Q"> と C<"B"> のうち短くなるほうを選ぶ。 - -キャラクタセット CHARSET を指定できる。初期値は C。 - -B<*> -C<"Q"> エンコーディングでは、空白を ``_'' でエスケープする。 - - -=cut - -=item encode_mimewords RAW, [OPTS] - -I<関数>。 -文字列 RAW から、「安全でない」文字の列を見つけてエンコードしようとする。 - - ### 「安全でない語」のある文字列をエンコードする: - $encoded = encode_mimewords("Me and \xABFran\xE7ois\xBB"); - -エンコードした文字列を返す。 - -B<**> -RAW は Unicode でもよい。ただし Unicode/マルチバイト対応が有効な場合 -(L 参照)。 -さらに RAW は、L -が配列コンテクストで返すものへの参照でもよい。 -後の場合は、"Charset" オプション (下記参照) が適宜上書きされる -(下の注も参照)。 - -B: -B<*> -RAW が配列への参照であるときは、 -隣り合う「encoded-word」 -(つまり、ASCII 以外のキャラクタセット要素のある要素) -を連結する。その上で、マルチバイト文字の文字境界を考慮しながら -(ただしこれは Unicode/マルチバイト対応が有効なときだけ)、分割する。 -エンコードしないデータ部分は両端に空白文字が必要。 -そうしなければ隣り合う「encoded-word」に併合されてしまう。 - -RAW に引き続く引数は、ハッシュによるオプションの定義とみなす: - -=over 4 - -=item Charset - -「安全でない」ものはこのキャラクタセットでエンコードする。 -初期値は 'ISO-8859-1' (別名 "Latin-1")。 - -=item Detect7bit -B<**> - -"Encoding" オプション (下記参照) が C<"a"> に指定してあって "Charset" -オプションが不明なら、 -RAW 文字列の 7 ビットキャラクタセットを判別しようとする。 -初期値は C<"YES">。 -Unicode/マルチバイト文字対応が有効になっていないとき -(L 参照) は、 -このオプションはなんの効果も持たない。 - -=item Encoding - -使用するエンコーディング。C<"q"> または C<"b">。 -B<**> -「特殊」な値も指定できる。C<"a"> は推奨されるエンコーディングを自動選択する -(キャラクタセットに別のものが推奨されるときはキャラクタセット変換も行う。 -L 参照)。 -C<"s"> は C<"q"> と C<"b"> のうち短くなるほうを選ぶ。 -B: -B<*> -リリース 1.005 で、初期値が C<"q"> -(MIME::Words での初期値) から C<"a"> に変わった。 - -=item Field - -この文字列を使うメールフィールドの名前。 -B<**> -ヘッダをエンコードする際には、最初の行でメールフィールド名の長さを考慮する。 - -=item Folding -B<**> - -エンコードする行を「行折り」する文字の列。初期値は C<"\n">。 -空文字列 C<""> を指定すると、行長 (下記 L 参照) -を超える「encoded-word」を SPACE で分割するだけ。 - -B: -B<*> -RFC 5822 (旧 RFC 2822) には、インターネットのメッセージでは行を -CRLF (C<"\r\n">) で区切ると明記してあるが、 -このモジュールでは後方互換性を保つために LF (C<"\n">) を初期値としてきた。 -初期値を使っている場合、 -エンコードしたヘッダをセッションへと放つ前に、 -改行文字の変換が必要になることもある。 - -=item Mapping -B<**> - -キャラクタセットの名前に対して実際に使うマッピングを指定する。 -C<"EXTENDED"> は拡張マッピングを使う。 -C<"STANDARD"> は標準化されている厳密なマッピングを使う。 -初期値は C<"EXTENDED">。 -Unicode/マルチバイト文字対応が有効になっていないとき -(L 参照) は、 -このオプションはなんの効果も持たない。 - -=item MaxLineLen -B<**> - -行の最大長 (改行を除く)。 -初期値は 76。 -負の値は行長無制限を意味する (リリース 1.012.3 以降)。 - -=item Minimal -B<**> - -エンコードするテキストの中の自然な語分離子 (要するに空白文字) -に注意を払う。 -C<"NO"> を指定すると、 -このモジュールは空白文字を考慮せずにテキスト全体をエンコード -(エンコードが必要なら) -し、行長を超える「encoded-word」は単にその長さによって分割される。 -初期値は C<"YES"> で、最小限の部分だけエンコードする。 -C<"DISPNAME"> を指定すると、RFC5322 (旧 RFC2822、RFC822) -のアドレス仕様 (3.4節) で述べている特殊文字を含む部分もエンコードする。 -これはアドレスフィールド中の display-name をエンコードする際に有用である。 - -B: -リリース 0.040 で、初期値が C<"YES"> に変わった。 -MIME::Words との互換性を保つためである。 -それ以前のリリースでは、このオプションは C<"NO"> 固定であった。 - -B: -C<"DISPNAME"> はリリース 1.012 で導入された。 - -=item Replacement -B<**> - -L 参照。 - -=back - - -=cut - -=back - -=head2 設定ファイル -B<**> - -L ('Charset' オプションを除く) および -L のオプション引数の組み込み初期値は、 -設定ファイルで上書きできる。 -F と F。 -詳細は F を読んでほしい。 - -=head1 VERSION - -C<$VERSION> 変数を参照してほしい。 - -このモジュールの開発版が -L -にある。 - -=head1 SEE ALSO - -L, -L - -=head1 AUTHORS - -decode_mimewords() 関数の元の版は L -モジュールから引き継いだもので、著者は以下のとおり: - Eryq (F), ZeeGee Software Inc (F). - David F. Skoll (dfs@roaringpenguin.com) http://www.roaringpenguin.com - -そのほかの部分は、次の者が書き直しあるいは加えた: - Hatuka*nezumi - IKEDA Soji . - -This program is free software; you can redistribute -it and/or modify it under the same terms as Perl itself. - - -=cut diff -Nru libmime-encwords-perl-1.012.4/lib/MIME/EncWords.pm libmime-encwords-perl-1.014.2/lib/MIME/EncWords.pm --- libmime-encwords-perl-1.012.4/lib/MIME/EncWords.pm 2011-10-26 06:17:02.000000000 +0000 +++ libmime-encwords-perl-1.014.2/lib/MIME/EncWords.pm 2013-08-26 15:55:32.000000000 +0000 @@ -116,6 +116,7 @@ } } } else { + require Unicode::String; require MIME::Charset::_Compat; for my $sub (@ENCODE_SUBS) { no strict "refs"; @@ -130,7 +131,7 @@ #------------------------------ ### The package version, both in 1.23 style *and* usable by MakeMaker: -$VERSION = '1.012.4'; +$VERSION = '1.014.2'; ### Public Configuration Attributes $Config = { @@ -152,10 +153,40 @@ my $UNSAFE = qr{[^\x01-\x20$PRINTABLE]}; my $WIDECHAR = qr{[^\x00-\xFF]}; my $ASCIITRANS = qr{^(?:HZ-GB-2312|UTF-7)$}i; +my $ASCIIINCOMPAT = qr{^UTF-(?:16|32)(?:BE|LE)?$}i; my $DISPNAMESPECIAL = "\\x22(),:;<>\\x40\\x5C"; # RFC5322 name-addr specials. #------------------------------ +# _utf_to_unicode CSETOBJ, STR +# Private: Convert UTF-16*/32* to Unicode or UTF-8. +sub _utf_to_unicode { + my $csetobj = shift; + my $str = shift; + + return $str if is_utf8($str); + + return $csetobj->decode($str) + if MIME::Charset::USE_ENCODE(); + + my $cset = $csetobj->as_string; + my $unistr = Unicode::String->new(); + if ($cset eq 'UTF-16' or $cset eq 'UTF-16BE') { + $unistr->utf16($str); + } elsif ($cset eq 'UTF-16LE') { + $unistr->utf16le($str); + } elsif ($cset eq 'UTF-32' or $cset eq 'UTF-32BE') { + $unistr->utf32($str); + } elsif ($cset eq 'UTF-32LE') { + $unistr->utf32le($str); + } else { + croak "unknown transformation '$cset'"; + } + return $unistr->utf8; +} + +#------------------------------ + # _decode_B STRING # Private: used by _decode_header() to decode "B" encoding. # Improvement by this module: sanity check on encoded sequence. @@ -714,11 +745,17 @@ # unsafe ASCII sequences my $UNSAFEASCII = ($maxrestlen <= 1)? qr{(?: =\? )}ox: - qr{(?: =\? | [$PRINTABLE]{$Params{MaxLineLen}} )}ox; - $UNSAFEASCII = qr{(?: [$DISPNAMESPECIAL] | $UNSAFEASCII )}ox + qr{(?: =\? | [$PRINTABLE]{$Params{MaxLineLen}} )}x; + $UNSAFEASCII = qr{(?: [$DISPNAMESPECIAL] | $UNSAFEASCII )}x if $Params{Minimal} eq 'DISPNAME'; unless (ref($words) eq "ARRAY") { + # workaround for UTF-16* & UTF-32*: force UTF-8. + if ($charsetobj->as_string =~ /$ASCIIINCOMPAT/) { + $words = _utf_to_unicode($charsetobj, $words); + $charsetobj = MIME::Charset->new('UTF-8'); + } + my @words = (); # unfolding: normalize linear-white-spaces and orphan newlines. $words =~ s/(?:[\r\n]+[\t ])*[\r\n]+([\t ]|\Z)/$1? " ": ""/eg; @@ -786,6 +823,13 @@ next unless length($s); my $csetobj = MIME::Charset->new($cset || "", Mapping => $Params{Mapping}); + + # workaround for UTF-16*/UTF-32*: force UTF-8 + if ($csetobj->as_string and $csetobj->as_string =~ /$ASCIIINCOMPAT/) { + $s = _utf_to_unicode($csetobj, $s); + $csetobj = MIME::Charset->new('UTF-8'); + } + # determine charset and encoding # try defaults only if 7-bit charset detection is not required my $enc; @@ -897,24 +941,26 @@ } # Split long ``words''. - my @splitted; + my @splitwords; my $restlen; if ($Params{MaxLineLen} < 0) { - @splitted = @triplets; + @splitwords = @triplets; } else { $restlen = $firstlinelen; foreach (@triplets) { my ($s, $enc, $csetobj) = @$_; - push @splitted, &_split($s, $enc, $csetobj, $restlen, $maxrestlen); - my ($last, $lastenc, $lastcsetobj) = @{$splitted[-1]}; + my @s = &_split($s, $enc, $csetobj, $restlen, $maxrestlen); + push @splitwords, @s; + my ($last, $lastenc, $lastcsetobj) = @{$s[-1]}; my $lastlen; if ($lastenc) { $lastlen = $lastcsetobj->encoded_header_len($last, $lastenc); } else { $lastlen = length($last); } - $restlen -= $lastlen; # FIXME: Sometimes estimated longer + $restlen = $maxrestlen if scalar @s > 1; # has split; new line(s) fed + $restlen -= $lastlen; $restlen = $maxrestlen if $restlen <= 1; } } @@ -922,7 +968,7 @@ # Do encoding. my @lines; $restlen = $firstlinelen; - foreach (@splitted) { + foreach (@splitwords) { my ($str, $encoding, $charsetobj) = @$_; next unless length($str); @@ -978,10 +1024,10 @@ return ([$str, $encoding, $charset]); } - my (@splitted, $ustr, $first); + my (@splitwords, $ustr, $first); while (length($str)) { if ($charset->encoded_header_len($str, $encoding) <= $restlen) { - push @splitted, [$str, $encoding, $charset]; + push @splitwords, [$str, $encoding, $charset]; last; } $ustr = $str; @@ -996,10 +1042,10 @@ ($first, $str) = &_clip_unsafe($ustr, $encoding, $charset, $maxrestlen); } - push @splitted, [$first, $encoding, $charset]; + push @splitwords, [$first, $encoding, $charset]; $restlen = $maxrestlen; } - return @splitted; + return @splitwords; } # _split_ascii RAW, ROOM_OF_FIRST_LINE, MAXRESTLEN @@ -1012,12 +1058,12 @@ my $maxrestlen = shift; $restlen ||= $maxrestlen; - my @splitted; + my @splitwords; my $ascii = MIME::Charset->new("US-ASCII", Mapping => 'STANDARD'); foreach my $line (split(/(?:[\t ]*[\r\n]+)+/, $s)) { my $spc = ''; foreach my $word (split(/([\t ]+)/, $line)) { - next unless scalar(@splitted) or $word; # skip first garbage + next unless scalar(@splitwords) or $word; # skip first garbage if ($word =~ /[\t ]/) { $spc = $word; next; @@ -1026,33 +1072,33 @@ my $cont = $spc.$word; my $elen = length($cont); next unless $elen; - if (scalar(@splitted)) { + if (scalar(@splitwords)) { # Concatenate adjacent words so that encoded-word and # unencoded text will adjoin with separating whitespace. if ($elen <= $restlen) { - $splitted[-1]->[0] .= $cont; + $splitwords[-1]->[0] .= $cont; $restlen -= $elen; } else { - push @splitted, [$cont, undef, $ascii]; + push @splitwords, [$cont, undef, $ascii]; $restlen = $maxrestlen - $elen; } } else { - push @splitted, [$cont, undef, $ascii]; + push @splitwords, [$cont, undef, $ascii]; $restlen -= $elen; } $spc = ''; } if ($spc) { - if (scalar(@splitted)) { - $splitted[-1]->[0] .= $spc; + if (scalar(@splitwords)) { + $splitwords[-1]->[0] .= $spc; $restlen -= length($spc); } else { # only WSPs - push @splitted, [$spc, undef, $ascii]; + push @splitwords, [$spc, undef, $ascii]; $restlen = $maxrestlen - length($spc); } } } - return @splitted; + return @splitwords; } # _clip_unsafe UNICODE, ENCODING, CHARSET_OBJECT, ROOM_OF_FIRST_LINE @@ -1155,7 +1201,6 @@ return %GotParams; } - #------------------------------ =back diff -Nru libmime-encwords-perl-1.012.4/lib/POD2/JA/Encode/MIME/EncWords.pod libmime-encwords-perl-1.014.2/lib/POD2/JA/Encode/MIME/EncWords.pod --- libmime-encwords-perl-1.012.4/lib/POD2/JA/Encode/MIME/EncWords.pod 1970-01-01 00:00:00.000000000 +0000 +++ libmime-encwords-perl-1.014.2/lib/POD2/JA/Encode/MIME/EncWords.pod 2013-08-26 15:55:32.000000000 +0000 @@ -0,0 +1,160 @@ +use utf8; + +=encoding utf-8 + +=head1 NAME + +Encode::MIME::EncWords~[ja] - MIME の「B」・「Q」ヘッダエンコーディング (代替案) + +=head1 SYNOPSIS + + use Encode::MIME::EncWords; + use Encode qw/encode decode/; + + # ヘッダデコードする。 + $utf8 = decode('MIME-EncWords', $header); + + # 初期のキャラクタセット (UTF-8) でヘッダエンコードする。 + $header = encode('MIME-EncWords', $utf8); + + # ほかのキャラクタセットでヘッダエンコードする。 + Encode::MIME::EncWords->config(Charset => 'GB2312'); + $header = encode('MIME-EncWords', $utf8); + +=head1 ABSTRACT + +このモジュールは、RFC 2047 に述べる +MIME のヘッダエンコーディングを実装している。 +エンコーディングの名前には、みっつの変種と、 +キャラクタセットに特化したひとつの簡易版がある。 + + エンコーディング名 encode() の結果 備考 + ------------------------------------------------------------------ + MIME-EncWords (B と Q を自動判別) + MIME-EncWords-B =?XXXX?B?...?= 初期値は UTF-8。 + MIME-EncWords-Q =?XXXX?Q?...?= ,, + MIME-EncWords-ISO_2022_JP =?ISO-2022-JP?B?...?= + +decode() の結果は、どのエンコーディングでも同じになる。 + +=head1 DESCRIPTION + +このモジュールは、L コアモジュールが提供する +C エンコーディングの代替となることを意図している。 +このモジュールの使いかたをよく知るためには、L を参照してほしい。 + +=head2 モジュール独自の機能 + +=over 4 + +=item config(KEY => VALUE, ...); + +I<クラスメソッド。> +KEY => VALUE の対でオプションを設定する。 +次のオプションが使える。 + +=over 4 + +=item Charset + +[encode] データ要素を変換するのに使うキャラクタセット。 +初期値は C<"UTF-8">。 +C では C<"ISO-2022-JP"> に固定。 + +=item Detect7bit + +[decode/encode] エンコードされていない部分の +7 ビットキャラクタセットを判別しようとする。 +初期値は C<"YES">。 + +=item Field + +[encode] ヘッダフィールドの名前。エンコードされた結果の最初の行で、 +これの長さが考慮される。 +初期値は C。 + +=item Mapping + +[decode/encode] キャラクタセットの名前に対して実際に使うマッピングを指定する。 +初期値は C<"EXTENDED">。 + +=item MaxLineLen + +[encode] 行の最大長 (改行を除く)。 +初期値は C<76>。 + +=item Minimal + +[encode] エンコーディングを最小限にするか否か。 +初期値は C<"YES">。 + +=back + +オプションの詳細については L を参照。 + +=back + +=head1 CAVEAT + +=over 4 + +=item * + +MIME ヘッダエンコーディング用のエンコーディングモジュールは、 +こみいったヘッダフィールドを簡単に作り出したり、 +そこから望みの要素を取り出したりできる打ち出の小槌ではない。 + +アドレスヘッダフィールド (To:、From: など) をデコードするには、 +まず mailbox-list を分解する。 +そして、個々の要素をエンコーディングモジュールでデコードする。 +これをエンコードするには、 +今度は個々の要素をエンコーディングモジュールでエンコードする。 +そして、エンコードした要素から mailbox-list を組み立てる。 +mailbox-list の組み立てや分解には、L +のようなモジュールが使えるだろう。 + +=item * + +行を LF (C<"\n">) で区切る。 +RFC5322 は、インターネットのメッセージでは行を CRLF (C<"\r\n">) +で区切るとしている。 + +=back + +=head1 BUGS + +バグやバグのような動作は開発者に知らせてください。 + +CPAN Request Tracker: +L. + +=head1 VERSION + +C<$VERSION> 変数を参照してほしい。 + +B<これは実験的なリリースである>。仕様は近い将来、変わるかもしれない。 + +このパッケージの開発版が次の場所にある。 +L。 + +=head1 SEE ALSO + +L, L, L. + +RFC 2047 I. + +=head1 AUTHOR + +Hatuka*nezumi - IKEDA Soji + +=head1 COPYRIGHT + +Copyright (C) 2011 Hatuka*nezumi - IKEDA Soji. + +This program is free software; you can redistribute it and/or modify it +under the same terms as Perl itself. + + +=cut + diff -Nru libmime-encwords-perl-1.012.4/lib/POD2/JA/MIME/EncWords.pod libmime-encwords-perl-1.014.2/lib/POD2/JA/MIME/EncWords.pod --- libmime-encwords-perl-1.012.4/lib/POD2/JA/MIME/EncWords.pod 1970-01-01 00:00:00.000000000 +0000 +++ libmime-encwords-perl-1.014.2/lib/POD2/JA/MIME/EncWords.pod 2013-08-26 15:55:32.000000000 +0000 @@ -0,0 +1,365 @@ +=encoding utf-8 + +=head1 NAME + +MIME::EncWords~[ja] - RFC 2047 encoded-word 関連 (改良版) + +=head1 SYNOPSIS + +I は、RFC 2047 (旧 RFC 1522) +の仕様により適合することをめざした L の別実装です。 +加えて、いくらかの改良がなされています。 +以下の梗概と説明は、もとの MIME::Words から採ったものに、 +改良点の説明 (B<**>) および変更点の説明と明確化 (B<*>) +を加えたものです。> + +読み進める前に、L を見るべきだ。そうして、 +あなたの成し遂げようとしていることのどこでこのモジュールを使うのかを、 +理解してほしい。 +いますぐ。待ってるから。 + +いいかな。はじめるよ... + + use MIME::EncWords qw(:all); + + ### 文字列を、キャラクタセットは無視してデコードした文字列にする: + $decoded = decode_mimewords( + 'To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= ', + ); + + ### 文字列を、デコードされた [DATA,CHARSET] の対の配列にする: + @decoded = decode_mimewords( + 'To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= ', + ); + + ### 単一の「安全でない語」をエンコードする: + $encoded = encode_mimeword("\xABFran\xE7ois\xBB"); + + ### 文字列を、「安全でない語」を探しながらエンコードする: + $encoded = encode_mimewords("Me and \xABFran\xE7ois\xBB in town"); + +=head1 DESCRIPTION + +合衆国の諸君。このモジュールでいったい何をやらかそうというのか、 +わからないかもしれないね。欧州、ロシア等の諸君なら、わかるだろう。C<(:-)>。 + +たとえば、これは有効な MIME ヘッダだ: + + From: =?US-ASCII?Q?Keith_Moore?= + To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= + CC: =?ISO-8859-1?Q?Andr=E9_?= Pirard + Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?= + =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?= + =?US-ASCII?Q?.._cool!?= + +これらのフィールドは、だいたいつぎのようにデコードできる: + + From: Keith Moore + To: Keld Jørn Simonsen + CC: André Pirard + Subject: If you can read this you understand the example... cool! + +B<追補>: 合衆国、欧州の諸君。 +このモジュールでいったいなにをやらかそうというのか、 +わからないかもしれないね。東アジア等の諸君なら、わかるだろう。 +C<(^_^)>. + +たとえば、これは有効な MIME ヘッダだ: + + Subject: =?EUC-KR?B?sNTAuLinKGxhemluZXNzKSwgwvzB9ri7seIoaW1w?= + =?EUC-KR?B?YXRpZW5jZSksILGzuLgoaHVicmlzKQ==?= + +これらのフィールドは、だいたいつぎのようにデコードできる: + + Subject: 게으름(laziness), 참지말기(impatience), 교만(hubris) + +=head1 PUBLIC INTERFACE + +=over 4 + + +=cut + +=item decode_mimewords ENCODED, [OPTS...] + +I<関数>。 +文字列から RFC 2047 スタイルの "Q" エンコーディング +(quoted-printable の一種) や "B" エンコーディング (base64) +を探し、それをデコードする。 + +B<配列コンテクストでは>、文字列 ENCODED をデコードした +C<[DATA, CHARSET]> の対に分割し、そのリストを返す。 +エンコードされていなかったデータは 1 要素の配列 +C<[DATA]> で返す (CHARSET は実質的に C)。 + + $enc = '=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= '; + foreach (decode_mimewords($enc)) { + print "", ($_[1] || 'US-ASCII'), ": ", $_[0], "\n"; + } + +B<**> +ただし、隣り合う「encoded-word」を、キャラクタセットがおなじなら連結する。 +これは、マルチバイト列を安全に扱えるようにするためである。 + +B<**> +RFC2231 第 5 節で定義している言語情報があれば、第 3 の要素として追加する。 + +B<*> +エンコードされていなかったデータの両端の空白文字は取り去らない。 +これは、L との互換性を保つためである。 + +B<スカラコンテクストでは>、上記のリストの DATA 要素をすべて連結し、 +それを返す。I<注意: 情報の損失がある>ので、 +望んだ結果が得られI<ない>かもしれない。 +だが、文字列 ENCODED +のすべての文字のキャラクタセットが同一だとわかっているのなら、 +これは役に立つこともある。 +(これを使う前に、L を見てほしい。 +これが望みのものかもしれない。) +B<**> +下記の "Charset" も参照。 + +構文エラーが発生すると、$@ にエラーの説明をセットするが、 +解析はできるかぎり (ヘッダのデコードで得られたI<なにか>を返すために) +続行する。 +エラーが見つからなければ、$@ は偽となる。 + +B<*> +「encoded-word」が壊れているときは、エンコードしたままのものを返す。 +この場合、$@ をセットする。 + +ENCODED に引き続く引数は、ハッシュによるオプションの定義とみなす。 +B<**> +Unicode/マルチバイト文字対応が有効になっていないとき +(L 参照) は、 +以下のオプションはなんの効果も持たない。 + +=over 4 + +=item Charset +B<**> + +スカラコンテクストで、DATA 要素をこの名前のキャラクタセットで変換する。 +このオプションに特殊値 C<"_UNICODE_"> を指定すると、 +返す値は Unicode 文字列となる。 + +B: +この仕様は、I を指定したとき以外は>、 +やはり情報の損失がある。 + +=item Detect7bit +B<**> + +エンコードされていなかった部分の 7 ビットキャラクタセットを判別しようとする。 +初期値は C<"YES">。 + + +=cut + +=item Mapping +B<**> + +スカラコンテクストで、 +キャラクタセットの名前に対して実際に使うマッピングを指定する。 +C<"EXTENDED"> は拡張マッピングを使う。 +C<"STANDARD"> は標準化されている厳密なマッピングを使う。 +初期値は C<"EXTENDED">。 + +=back + +=cut + +=item encode_mimeword RAW, [ENCODING], [CHARSET] + +I<関数>。 +「安全でない」文字のある単一の「語」RAW をエンコードする。 +「語」全体がエンコードされる。 + + ### "«François»" をエンコードする: + $encoded = encode_mimeword("\xABFran\xE7ois\xBB"); + +エンコーディング ENCODING を指定できる (C<"Q"> または C<"B">)。 +初期値は C<"Q">。 +B<**> +さらに、「特殊」な値も指定できる。 +C<"S"> は C<"Q"> と C<"B"> のうち短くなるほうを選ぶ。 + +キャラクタセット CHARSET を指定できる。初期値は C。 + +B<*> +C<"Q"> エンコーディングでは、空白を ``_'' でエスケープする。 + + +=cut + +=item encode_mimewords RAW, [OPTS] + +I<関数>。 +文字列 RAW から、「安全でない」文字の列を見つけてエンコードしようとする。 + + ### 「安全でない語」のある文字列をエンコードする: + $encoded = encode_mimewords("Me and \xABFran\xE7ois\xBB"); + +エンコードした文字列を返す。 + +B<**> +RAW は Unicode でもよい。ただし Unicode/マルチバイト対応が有効な場合 +(L 参照)。 +さらに RAW は、L +が配列コンテクストで返すものへの参照でもよい。 +後の場合は、"Charset" オプション (下記参照) が適宜上書きされる +(下の注も参照)。 + +B: +B<*> +RAW が配列への参照であるときは、 +隣り合う「encoded-word」 +(つまり、ASCII 以外のキャラクタセット要素のある要素) +を連結する。その上で、マルチバイト文字の文字境界を考慮しながら +(ただしこれは Unicode/マルチバイト対応が有効なときだけ)、分割する。 +エンコードしないデータ部分は両端に空白文字が必要。 +そうしなければ隣り合う「encoded-word」に併合されてしまう。 + +RAW に引き続く引数は、ハッシュによるオプションの定義とみなす: + +=over 4 + +=item Charset + +「安全でない」ものはこのキャラクタセットでエンコードする。 +初期値は 'ISO-8859-1' (別名 "Latin-1")。 + +=item Detect7bit +B<**> + +"Encoding" オプション (下記参照) が C<"a"> に指定してあって "Charset" +オプションが不明なら、 +RAW 文字列の 7 ビットキャラクタセットを判別しようとする。 +初期値は C<"YES">。 +Unicode/マルチバイト文字対応が有効になっていないとき +(L 参照) は、 +このオプションはなんの効果も持たない。 + +=item Encoding + +使用するエンコーディング。C<"q"> または C<"b">。 +B<**> +「特殊」な値も指定できる。C<"a"> は推奨されるエンコーディングを自動選択する +(キャラクタセットに別のものが推奨されるときはキャラクタセット変換も行う。 +L 参照)。 +C<"s"> は C<"q"> と C<"b"> のうち短くなるほうを選ぶ。 +B: +B<*> +リリース 1.005 で、初期値が C<"q"> +(MIME::Words での初期値) から C<"a"> に変わった。 + +=item Field + +この文字列を使うメールフィールドの名前。 +B<**> +ヘッダをエンコードする際には、最初の行でメールフィールド名の長さを考慮する。 + +=item Folding +B<**> + +エンコードする行を「行折り」する文字の列。初期値は C<"\n">。 +空文字列 C<""> を指定すると、行長 (下記 L 参照) +を超える「encoded-word」を SPACE で分割するだけ。 + +B: +B<*> +RFC 5322 (旧 RFC 2822) には、インターネットのメッセージでは行を +CRLF (C<"\r\n">) で区切ると明記してあるが、 +このモジュールでは後方互換性を保つために LF (C<"\n">) を初期値としてきた。 +初期値を使っている場合、 +エンコードしたヘッダをセッションへと放つ前に、 +改行文字の変換が必要になることもある。 + +=item Mapping +B<**> + +キャラクタセットの名前に対して実際に使うマッピングを指定する。 +C<"EXTENDED"> は拡張マッピングを使う。 +C<"STANDARD"> は標準化されている厳密なマッピングを使う。 +初期値は C<"EXTENDED">。 +Unicode/マルチバイト文字対応が有効になっていないとき +(L 参照) は、 +このオプションはなんの効果も持たない。 + +=item MaxLineLen +B<**> + +行の最大長 (改行を除く)。 +初期値は 76。 +負の値は行長無制限を意味する (リリース 1.012.3 以降)。 + +=item Minimal +B<**> + +エンコードするテキストの中の自然な語分離子 (要するに空白文字) +に注意を払う。 +C<"NO"> を指定すると、 +このモジュールは空白文字を考慮せずにテキスト全体をエンコード +(エンコードが必要なら) +し、行長を超える「encoded-word」は単にその長さによって分割される。 +初期値は C<"YES"> で、最小限の部分だけエンコードする。 +C<"DISPNAME"> を指定すると、RFC5322 (旧 RFC2822、RFC822) +のアドレス仕様 (3.4節) で述べている特殊文字を含む部分もエンコードする。 +これはアドレスフィールド中の display-name をエンコードする際に有用である。 + +B: +リリース 0.040 で、初期値が C<"YES"> に変わった。 +MIME::Words との互換性を保つためである。 +それ以前のリリースでは、このオプションは C<"NO"> 固定であった。 + +B: +C<"DISPNAME"> はリリース 1.012 で導入された。 + +=item Replacement +B<**> + +L 参照。 + +=back + +=cut + +=back + +=head2 設定ファイル +B<**> + +L ('Charset' オプションを除く) および +L のオプション引数の組み込み初期値は、 +設定ファイルで上書きできる。 +F と F。 +詳細は F を読んでほしい。 + +=head1 VERSION + +C<$VERSION> 変数を参照してほしい。 + +このモジュールの開発版が +L +にある。 + +=head1 SEE ALSO + +L, +L + +=head1 AUTHORS + +decode_mimewords() 関数の元の版は L +モジュールから引き継いだもので、著者は以下のとおり: + Eryq (F), ZeeGee Software Inc (F). + David F. Skoll (dfs@roaringpenguin.com) http://www.roaringpenguin.com + +そのほかの部分は、次の者が書き直しあるいは加えた: + Hatuka*nezumi - IKEDA Soji . + +This program is free software; you can redistribute +it and/or modify it under the same terms as Perl itself. + + +=cut diff -Nru libmime-encwords-perl-1.012.4/t/05encode_utf.t libmime-encwords-perl-1.014.2/t/05encode_utf.t --- libmime-encwords-perl-1.012.4/t/05encode_utf.t 1970-01-01 00:00:00.000000000 +0000 +++ libmime-encwords-perl-1.014.2/t/05encode_utf.t 2013-08-26 15:55:32.000000000 +0000 @@ -0,0 +1,67 @@ +use strict; +use Test::More; + +BEGIN { + if ($] < 5.007003) { + plan skip_all => 'No Unicode/multibyte support'; + } else { + plan tests => 36; + } +} + +use MIME::EncWords qw(encode_mimewords); +$MIME::EncWords::Config = { + Detect7bit => 'YES', + Mapping => 'EXTENDED', + Replacement => 'DEFAULT', + Charset => 'ISO-8859-1', + Encoding => 'A', + Field => undef, + Folding => "\n", + MaxLineLen => 76, + Minimal => 'YES', +}; + +dotest('UTF-16'); +dotest('UTF-16BE'); +dotest('UTF-16LE'); +dotest('UTF-32'); +dotest('UTF-32BE'); +dotest('UTF-32LE'); + +sub dotest { + my $charset = shift; + + local($/) = ''; + open WORDS, ") { + s{\A\s+|\s+\Z}{}g; # trim + + my ($isgood, $dec, $expect) = split /\n/, $_, 3; + $isgood = (uc($isgood) eq 'GOOD'); + my @params = eval $dec; + + if (ref $params[0]) { + foreach my $p (@{$params[0]}) { + if ($p->[1] and uc $p->[1] eq 'UTF-8') { + Encode::from_to($p->[0], 'UTF-8', $charset); + $p->[1] = $charset; + } + } + } else { + if ($params[1] and $params[1] eq 'Charset' and + uc $params[2] eq 'UTF-8') { + Encode::from_to($params[0], 'UTF-8', $charset); + $params[2] = $charset; + } + } + + my $enc = encode_mimewords(@params); + is((($isgood && !$@) or (!$isgood && $@)) && + ($isgood ? $enc : $expect), $expect, $@ || $enc); + } + close WORDS; +} + +1; + diff -Nru libmime-encwords-perl-1.012.4/testin/encode-ascii.txt libmime-encwords-perl-1.014.2/testin/encode-ascii.txt --- libmime-encwords-perl-1.012.4/testin/encode-ascii.txt 2011-10-26 06:17:02.000000000 +0000 +++ libmime-encwords-perl-1.014.2/testin/encode-ascii.txt 2013-08-26 15:55:32.000000000 +0000 @@ -1,8 +1,8 @@ GOOD ([["Perl=?: "], ["\x1B\x24BIBE*\x40^Co "EUC-JP") diff -Nru libmime-encwords-perl-1.012.4/testin/encode-singlebyte.txt libmime-encwords-perl-1.014.2/testin/encode-singlebyte.txt --- libmime-encwords-perl-1.012.4/testin/encode-singlebyte.txt 2011-10-26 06:17:02.000000000 +0000 +++ libmime-encwords-perl-1.014.2/testin/encode-singlebyte.txt 2013-08-26 15:55:32.000000000 +0000 @@ -42,8 +42,8 @@ GOOD ("Th\xE8me tr\xE8s important\xA0: La r\xE9alisation du Syst\xE8me de R\xE9f\xE9rence C\xE9leste", Charset => "iso-8859-1") =?ISO-8859-1?Q?Th=E8me_tr=E8s_important=A0=3A?= La =?ISO-8859-1?Q?r=E9alis?= - =?ISO-8859-1?Q?ation?= du =?ISO-8859-1?Q?Syst=E8me?= de - =?ISO-8859-1?Q?R=E9f=E9rence_C=E9leste?= + =?ISO-8859-1?Q?ation?= du =?ISO-8859-1?Q?Syst=E8me?= de =?ISO-8859-1?Q?R?= + =?ISO-8859-1?Q?=E9f=E9rence_C=E9leste?= GOOD ("_-_")