summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfukachan <fukachan>2001-03-26 11:41:08 +0000
committerfukachan <fukachan>2001-03-26 11:41:08 +0000
commit87ac82fb0efdd291ac8de20c2e6a33a7061c819c (patch)
treecec6ed12dd6e31595ca0a4b3cb2e135d14c4d61e
parent617fb21dfdeb5a53b421376358e6babdef2ccd59 (diff)
downloadfml8-87ac82fb0efdd291ac8de20c2e6a33a7061c819c.tar.gz
fml8-87ac82fb0efdd291ac8de20c2e6a33a7061c819c.tar.bz2
fml8-87ac82fb0efdd291ac8de20c2e6a33a7061c819c.zip
preserve \s+ in the string to MIME encode
-rw-r--r--fml/lib/FML/MIME.pm21
-rwxr-xr-xregress/base/mime.pl5
2 files changed, 23 insertions, 3 deletions
diff --git a/fml/lib/FML/MIME.pm b/fml/lib/FML/MIME.pm
index 75e15032..43af8322 100644
--- a/fml/lib/FML/MIME.pm
+++ b/fml/lib/FML/MIME.pm
@@ -86,6 +86,27 @@ by $options->{ charset }.
sub encode_mime_string
{
my ($str, $options) = @_;
+ my $buf = ''; # return buffer
+ my $p = 0;
+ my $pp = 0;
+
+ while ($str) {
+ if ($str =~ /^(\S+)/) {
+ $buf .= _encode_mime_string($1, $options);
+ $str =~ s/^(\S+)//;
+ }
+ elsif ($str =~ /^(\s+)/) {
+ $buf .= $1;
+ $str =~ s/^(\s+)//;
+ }
+ }
+
+ return $buf;
+}
+
+sub _encode_mime_string
+{
+ my ($str, $options) = @_;
my $charset = $options->{ 'charset' } || 'iso-2022-jp';
my $encode = $options->{ 'encode' } || 'base64';
my $header = '=?'. $charset;
diff --git a/regress/base/mime.pl b/regress/base/mime.pl
index 5add052c..3811cee4 100755
--- a/regress/base/mime.pl
+++ b/regress/base/mime.pl
@@ -14,7 +14,7 @@ use MIME::QuotedPrint;
&try_mime(" ");
&try_mime(" ");
&try_mime("\n");
-&try_mime(" ", 3);
+&try_mime("", 3);
exit 0;
@@ -24,8 +24,7 @@ sub try_mime
my ($separator, $xbuf) = @_;
my $buf = "\n";
- my $orig_str = "うじゃ". $separator ."あじゃじゃ";
- $orig_str = "うじゃ". $separator . $xbuf . "あじゃじゃ" if $xbuf;
+ my $orig_str = "さくら". $separator . $xbuf . "映画版";
my $in_str_b64 = encode_mime_string($orig_str);
my $in_str_qp = encode_mime_string($orig_str, { encode => 'qp' });