diff options
| author | fukachan <fukachan> | 2001-02-03 15:15:04 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2001-02-03 15:15:04 +0000 |
| commit | c7d058fd25ba2d1ee41c4d784c60484122abc742 (patch) | |
| tree | e919768eae1cfee3666755461408b5c0ce0b127c | |
| parent | 019b64ef3730fff1e50e138bde5c4490e933cfc5 (diff) | |
| download | fml8-c7d058fd25ba2d1ee41c4d784c60484122abc742.tar.gz fml8-c7d058fd25ba2d1ee41c4d784c60484122abc742.tar.bz2 fml8-c7d058fd25ba2d1ee41c4d784c60484122abc742.zip | |
we can print the tralior after the end of continuous multipart blocks
| -rw-r--r-- | fml/lib/MailingList/Messages.pm | 22 | ||||
| -rw-r--r-- | regress/base/msg_mp.2 | 65 | ||||
| -rw-r--r-- | regress/base/multipart_io.pl | 2 | ||||
| -rw-r--r-- | regress/base/multipart_io.sh | 15 |
4 files changed, 93 insertions, 11 deletions
diff --git a/fml/lib/MailingList/Messages.pm b/fml/lib/MailingList/Messages.pm index 7801c34c..dd98d997 100644 --- a/fml/lib/MailingList/Messages.pm +++ b/fml/lib/MailingList/Messages.pm @@ -288,10 +288,11 @@ sub parse_mime_multipart return undef unless $args->{ content }; # boundaries of the continuous multipart blocks - my $content = $args->{ content }; - my $boundary = $args->{ boundary }; - my $buf_begin = index($$content, $boundary , 0); - my $buf_end = index($$content, $boundary."--", 0); + my $content = $args->{ content }; + my $boundary = $args->{ boundary }; + my $content_length = length($$content); + my $buf_begin = index($$content, $boundary , 0); + my $buf_end = index($$content, $boundary."--", 0); # prepare lexical variables # pb = position of the beginning, pe = position of the end @@ -319,6 +320,16 @@ sub parse_mime_multipart }); } while ($pe <= $buf_end); + my $p = index($$content, "\n", $buf_end) + 1; + if (($content_length - $p) > 0) { + $m[ $i++ ] = _alloc_new_part($self, { + boundary => $boundary, + offset_begin => $p, + offset_end => $content_length, + content => $content, + }); + } + my $j = 0; for ($j = 0; $j < $i; $j++) { if (defined $m[ $j + 1 ]) { @@ -345,9 +356,6 @@ sub _alloc_new_part my $me = {}; _create($me, { - next => $args->{ next } || undef, - prev => $args->{ prev } || undef, - offset_begin => $args->{ offset_begin }, offset_end => $args->{ offset_end }, content => $args->{ content }, diff --git a/regress/base/msg_mp.2 b/regress/base/msg_mp.2 new file mode 100644 index 00000000..8862cf58 --- /dev/null +++ b/regress/base/msg_mp.2 @@ -0,0 +1,65 @@ +Mime-Version: 1.0 +Content-Type: multipart/mixed; + boundary="----_=_NextPart_000_01BE1C09.8D2506D0" +Precedence: bulk + +This message is in MIME format. Since your mail reader does not understand +this format, some or all of this message may not be legible. + +------_=_NextPart_000_01BE1C09.8D2506D0 +Content-Type: text/plain; + charset="iso-2022-jp" + +fukachan. test of multipart. + +--fukachan + +------_=_NextPart_000_01BE1C09.8D2506D0 +Content-Type: image/gif; + name="ecscc.gif" +Content-Transfer-Encoding: base64 +Content-Disposition: attachment; + filename="ecscc.gif" +Content-Location: ATT-0-7EE83767F087D211BEF500805F8BE119-e + cscc.gif + +R0lGODlhrABLAPcAAAAAAJlcAP+ZCv+ZEP+aF/+bHP+bH/+cJf+dKf+eLf+fM/+gOf+hPP+jQP+l +Rv+mTP+oUP+qVP+sW/+tXv+wZP+yaf+0bf+3c/+4dv/CZv+8ff++gP/AhP/Cif/Gj//Ik//Jlv/M +m//Pn//Qov/Spv/Vqv/WrP/Yr//asv/ctf/euP/euf/hvP/hvv/jwP/kwf/lw//mxP/mxf/nxv/o +yP/pyf/pyv/qyv/qy////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAADkALAAAAACsAEsA +AAj/AHMIHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuX +MGPKnEmzps2bOHPq3MmzZ84AQIMKHUq0qNGjSIf6lBkAh9OnUKNKnUq1qtWoS2E2vcq1q9eqGbK6 +DHCjrNmzaNOqXcu2LdqwYlkGsEG3rt27ePPq3cv3Lty4KgPUGEy4sOHDiBMrXmz4L2CUAWhInky5 +suXLmDNrruz4scnIm0OLHp25s2eSAWaoXs26tevXsGPLbm36tMgAMnLr3s27t+/fwIPzrm0bZIAY +yJMrX868ufPn0JcTL+4xAIzr2LNr3869u/fv2qdT/+cY4IX58+jTq1/Pvr379OLHawzgor79+/jx +A9jPH4B9//kFKGCA8cmHUQAtJKjgggwqyB+D/QHQ4IQUUliggRYFwMKGHHbo4Yb7fQgifyKWaKKH +F2JIUQArtOjiizCusF+ML/JH4404wpiiihIFoMKPQAYp5H5CFqkCkUYmqWSQO/IIUQApRCnllFPy +R+WVKeyH5ZZcUtmkkw4FgMKYZJZZJn9mpjkmAGq26aaZX4LJUAAn1GnnnXbyh+eefN4ZYZ+Aximn +QgGYYOihiB7KX6KMNmrofopC6mijgg6KUAAlZKrpppryx+mnoJawH6eehvpppZYaFAAJrLbqaqv8 +vf8q66wk7PdqrLTKimqqBAUwwq/ABgssf8IWa+x+xwJg7LK76pTUs0aJIO201E7LX7XYZrtfttx2 +C+23QNkE7rchlGvuuebyh+667O7H7rvwjpvUTSDUa++9+Oar77777scvv/z1++/ABA9cUwYfJKzw +wgw37PDDDfMH8cMSRwzAxBhnDHEGHNuUgQcghyzyyCSXbPLI+52MMsj9kQyAyjDHbDLHzY6UQQc4 +56zzzjz37HPO/P0MtM79EQ2A0EgnzTPNPmXAwdNQRy311FRX/TR/VnMAgNQRRpj112BHzbRYGWxg +9tlop6322mybzZ/a+63dddxt12132mM/loEGfPf/7fffgAcuON9zD044f4YnrnjfeduWAQaQRy75 +5JRXbvnlmGeu+eYYND5eBheELvropJdu+umop6766ql7jmEGFsQu++y012777bjnrvvutbvuZAYV +BC/88MQXb/zxyCev/PLB+z5oBhREL/301Fdv/fXYZ6999s7zmsEE4Icv/vjkl2/++einT373vA6U +gQTwxy///PTXb//9+OcPP/vtF5RBBAAMoAAHSMACGvCACDwg//p3kAxA4IEQjKAEJ0jBClrwghJc +IAMTkoEHePCDIAyhCEdIwhKa8AEa3OBCMuCAFrrwhTCMoQxnSEMZplCFDclAA3bIwx768IdADKIQ +t3l4Qxw+JAMMSKISl8jEJjrxiU8sohEjkoEFWPGKWMyiFrfIRSxKcYoTyYACxkjGMprxjGhM4xfB +WJEMJOCNcIyjHOdIxziukY0XyQAC9sjHPvrxj4C8Ix4zkoEDGPKQiEykIg8pyEFuJAMGiKQkJ0lJ +SjbSkR3JQAE2yclOerIAl8TkRzJAgFKa8pSlDKUoQ5KBAbjyla5U5SptJoBaCkCWsywJzWqWy176 +8pfADKYwh0nMYhYkIAA7 + +------_=_NextPart_000_01BE1C09.8D2506D0-- + +trailor diff --git a/regress/base/multipart_io.pl b/regress/base/multipart_io.pl index d3d79d03..e1073e12 100644 --- a/regress/base/multipart_io.pl +++ b/regress/base/multipart_io.pl @@ -5,7 +5,7 @@ my $dir = dirname($0); $| = 1; -my $msg = "$dir/msg_mp"; +my $msg = shift || "$dir/msg_mp"; use FileHandle; my $fh = new FileHandle $msg; diff --git a/regress/base/multipart_io.sh b/regress/base/multipart_io.sh index 1b732bda..01ba7a0a 100644 --- a/regress/base/multipart_io.sh +++ b/regress/base/multipart_io.sh @@ -4,9 +4,18 @@ dir=`dirname $0` tmp=/tmp/buf$$ -sed -n '1,/^$/p' $dir/msg_mp > $tmp -perl $dir/multipart_io.pl >> $tmp +trap "rm -f $tmp" 0 1 3 15 -diff -ub $dir/msg_mp $tmp && echo ok || echo fail + +DIFF () { + local msg=$1 + + sed -n '1,/^$/p' $msg > $tmp + perl $dir/multipart_io.pl $msg >> $tmp + diff -ub $msg $tmp && echo ok || echo fail +} + +DIFF $dir/msg_mp +DIFF $dir/msg_mp.2 exit 0; |
