5.433 2007-09-27 Dave O'Neill
* VERSION 5.4.33 RELEASED
* (bugfix) Fix API regression - MIME::Entity::body() should return an
arrayref. Fixes RT 29643.
5.422 2007-09-25 Dave O'Neill
* VERSION 5.422 RELEASED
* (bugfix) Require File::Temp 0.17 or newer for IO::Seekable support.
This fixes test failures seen on Darwin.
* (bugfix) Clear filer's purgeable() before calling init_parse(). Fixes RT 7858.
commit 005e387c42957f2a433464beaef1d2b416746963
Author: Dave O'Neill
Date: Fri Sep 21 12:41:03 2007 -0400
Add LICENSE item to Makefile.PL
5.421 2007-09-21 Dave O'Neill
* VERSION 5.421 RELEASED
* (enhancement) Use File::Temp for tempfile generation. MIME::Parser
now has a tmp_dir() method for changing the temporary directory on a
per-parser basis.
5.420_02 2007-08-29 Dave O'Neill
* VERSION 5.420_02 (developer release)
* (bugfix) Correct 'use vars' and add a 'use strict' (fixes RT #22681)
* (bugfix) Don't allow all-whitespace filenames in
recommended_filename() (fixes RT #6115)
* (bugfix) Require IO-stringy 2.110. Fixes RT tickets 11312, 11452,
12375, 12784, and 18791
* (docs) Updated RFC references to refer to MIME RFCs 2045-2049 (RT #14119)
* (cleanup) Warn if no decoder is found for a given encoding. (RT #22682)
* (cleanup) IO::Wrap no longer used, IO::ScalarArray use minimized
5.420_01 2007-06-18 Dave O'Neill
* VERSION 5.420_01 (developer release)
* (bugfix) Fix warning generated by a header of "Content-Type: /".
Previous versions would warn about undefined variables. We now
set a blank type and subtype.
* (cleanup) Partial removal of dependencies on IO::Scalar and
IO::ScalarArray. We now use Perl's built-in I/O on scalars as much
as possible. NOTE THAT THIS REQUIRES PERL 5.8!
* (cleanup) FileHandle usage removed in favour of IO::File
* (cleanup) Remove broken utility methods -- shellquote() because it
didn't really make anything safe, and catfile(), because File::Spec
is better.
* (cleanup) Multiple test cleanups, including removal of
ExtUtils/TBone.pm. Tests now use Test::More.
* (cleanup) Remove support for recycling tempfiles ( tmp_recycling() and
its usage in new_tmpfile() )
* (cleanup) Remove nasty "eval join('',<::DATA>) unless caller()"
testing code from various modules
* (cleanup) Merge all changelog information from README and
MIME/Tools.pm into ChangeLog
2006-03-17 David F. Skoll
* VERSION 5.420 RELEASED
* Fix regression introduced in 5.419 -- quoted-printable
encoding would sometimes fail on "textual" MIME parts.
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.
2005-12-22 David F. Skoll
* VERSION 5.419 RELEASED
* Added MIME::Parser->decode_bodies method. This lets you force
MIME::Tools to store body parts WITHOUT decoding them. Useful
if you need the exact unmangled message source (for example,
for GPG-signing.) Patch submitted by Jörn Reder.
2005-09-29 David F. Skoll <dfs@roaringpenguin.com>
* MIME/Decoder/QuotedPrint.pm: Localize "$_" in a couple of places.
* MIME/WordDecoder.pm: Turn off useless debugging output to STDERR
* MIME/Entity.pm: Make the stringify method use IO::ScalarArray
instead of IO::Scalar. For small messages, performance may be
worse; for large messages, it is definitely much better.
* MANIFEST: Remove some useless internal files from the manifest.
They were never meant to be part of the actual distribution.
2005-01-20 David F. Skoll
* VERSION 5.417 RELEASED
* Require MIME::QuotedPrint 3.03 to use the three-argument
"encode_qp" function. If we have an earlier version of
MIME::QuotedPrint, fall back to the one-argument version.
* Field/ParamVal.pm: The patch to strip trailing whitespace on
parameters was buggy and caused decoding errors. This has been
fixed.
2005-01-03 David F. Skoll
* VERSION 5.416 RELEASED
* Allow MIME::Tools to work with MIME::QuotedPrint 2.20 again.
The Makefile.PL will warn about potential problems, but will allow you
to proceed.
* Field/ParamVal.pm: Strip trailing whitespace when extracting
parameters. Apparently, not doing so can cause Perl to core dump
on certain badly-formed messages.
module directory has changed (eg. "darwin-2level" vs.
"darwin-thread-multi-2level").
binary packages of perl modules need to be distinguishable between
being built against threaded perl and unthreaded perl, so bump the
PKGREVISION of all perl module packages and introduce
BUILDLINK_RECOMMENDED for perl as perl>=5.8.5nb5 so the correct
dependencies are registered and the binary packages are distinct.
addresses PR pkg/28619 from H. Todd Fujinaka.
2004-10-27 David F. Skoll
* VERSION 5.415 RELEASED
* Fixed parsing of paramater="" in headers, and fixed case where
multipart boundary is ""
2004-10-06 David F. Skoll
* VERSION 5.414 RELEASED
* Remove MIME::QuotedPrint 3.03 as a dependency and add
MIME::Base64 3.03 instead.
* Check return values of I/O operations like open(), close(), etc.
and die if they fail. Problem reported by Mark Martinec.
2004-09-15 David F. Skoll
* VERSION 5.413 RELEASED
* Fix some $VERSION = xxx assignments that were broken; make sure
VERSION shows up as 5.413 everywhere. Sorry about that!
2004-09-09 David F. Skoll
* VERSION 5.412 RELEASED
* Recognize "binhex40", "mac-binhex" and "mac-binhex40"
Content-Transfer-Encodings.
* Filer.pm: Be much more strict in evil_filename, allowing only
a set of known good characters.
2004-09-08 David F. Skoll
* Skip BinHex decoding if prerequisite modules not installed.
* Fix BinHex decoder so it encodes correctly; regression test for
BinHex encoding now passes.
* Require MIME::QuotedPrint 3.03 or newer.
* Rename variable "$jkfis" to "$how_encoded"
* Correct attribution of changes in changelog.
* Correct bad regexp test for "bad PDF" files.
2004-09-07 David F. Skoll
* lib/MIME/Parser/Filer.pm (evil_filename): Make evil_filename
more paranoid (Julian Field and Martin Blapp)
* lib/MIME/Parser/Filer.pm (exorcise_filename): Delete leading and
trailing whitespace (Julian Field)
* Remove all the Benchmark code (Martin Blapp)
* lib/MIME/Decoder.pm: Add support for BinHex encoded attachments
(Julian Field)
* lib/MIME/Decoder.pm: Require MIME::QuotedPrint 3.03 or newer
for correct decoding of binary attachments. (Alexey Kravchuk)
* lib/MIME/Decoder/QuotedPrint.pm: Attempt to deal sanely with
PDF files encoded using quoted-printable encoding by Outlook,
which does not follow the RFC guidelines. (Martin Blapp)
* lib/MIME/Field/ParamVal.pm: Deal with RFC2231-encoded parameters.
* lib/MIME/Head.pm: Correct "7-bit", "7 bit" and "7_bit" to 7bit;
likewise for 8bit lookalikes. (Martin Blapp)
* lib/MIME/Parser.pm: Add max_parts method to limit maximum number
of MIME parts we are willing to parse.
* DSKOLL took over maintainership of MIME::tools at version 5.411a.
The automatic truncation in gensolpkg doesn't work for packages which
have the same package name for the first 5-6 chars.
e.g. amanda-server and amanda-client would be named amanda and amanda.
Now, we add a SVR4_PKGNAME and use amacl for amanda-client and amase for
amanda-server.
All svr4 packages also have a vendor tag, so we have to reserve some chars
for this tag, which is normaly 3 or 4 chars. Thats why we can only use 6
or 5 chars for SVR4_PKGNAME. I used 5 for all the packages, to give the
vendor tag enough room.
All p5-* packages and a few other packages have now a SVR4_PKGNAME.
foo-* to foo-[0-9]*. This is to cause the dependencies to match only the
packages whose base package name is "foo", and not those named "foo-bar".
A concrete example is p5-Net-* matching p5-Net-DNS as well as p5-Net. Also
change dependency examples in Packages.txt to reflect this.
Update provided by Nathan Ahlstrom <nrahlstr@winternet.com> in
PR pkg/12897.
Version 5.410 (2000/11/23)
Better detection of evil filenames. Now we check for filenames
which are suspiciously long, and a new
MIME::Filer::exorcise_filename() method is used to try and
remove the evil. Thanks to Jason Haar for the suggestion.
Version 5.409 (2000/11/12)
Added functionality to MIME::WordDecoder, including support for
plain US-ASCII.
MIME::Tools::tmpopen() made more flexible. You can now override
the tmpfile-opening behavior.
Version 5.408 (2000/11/10)
Added new Beta unmime() mechanism. See MIME::WordDecoder
for full details. Also see Understand how international
characters are represented.
Version 5.405 (2000/11/05)
Added a purge() that does what people want it to. Now, when a
parse finishes and you want to delete everything that was
created by it, you can invoke purge() on the parser's filer.
All files/directories created during the last parse should
vanish. Thanks to everyone who complained about
MIME::Entity::purge.
Version 5.404 (2000/11/04)
Added new automatic MIME-decoding of attachment filenames with
encoded (non-ASCII) characters. Hopefully this will do more
good than harm. The use of MIME::Parser::decode_headers() and
MIME::Head::decode() has been deprecated in favor of the new
MIME::Words "unmime" mechanism. Please see unmime.
Added tolerance for unquoted =?...?= in param values. This is
in violation of the RFCs, but then, so are some MUAs. Thanks to
desti for bringing this to my attention.
Fixed supposedly-bad B-encoding. Thanks to Otto Frost for
bringing this to my attention.
Version 5.316 (2000/09/21)
Increased tolerance in MIME::Parser. Now will ignore bogus POP3
"+OK" line before header, as well as bogus mailbox "From " line
(both with warnings). Thanks to Antony OSullivan (ajos1) for
suggesting this feature.
Fixed small epilogue-related bug in MIME::Entity::print_body().
Now it only outputs a final newline if the epilogue does not
end in one already. Support for checking the preamble/epilogue
in regression tests was also added. Thanks to Lars Hecking for
bringing this issue up.
Updated documentation. All module manual pages should now
direct readers to the main MIME-tools manual page.
Version 5.314 (2000/09/06)
Fixed Makefile.PL to have less-restrictive requirement for
File::Spec (0.6).
Version 5.313 (2000/09/05)
Fixed nasty bug with evil filenames. Certain evil filenames
were getting replaced by internally-generated filenames which
were just as evil... ouch! If your parser occasionally throws a
fatal exception with a "write-open" error message, then you
have this bug. Thanks to Julian Field and Antony OSullivan
(ajos1) for delivering the evidence!
Beware the doctor
who cures seasonal head cold
by killing patient
Improved naming of extracted files. If a filename is regarded
as evil, we guess that it might just be because of part
information, and attempt to find and use the final path
element.
Simplified message logging and made it more consistent. For
details, see Message-logging.
Version 5.312 (2000/09/03)
Fixed a Perl 5.7 select() incompatibility which caused "make
test" to fail. Thanks to Nick Ing-Simmons for the patch.
Version 5.311 (2000/08/16)
Blind fix for Win32 uudecoding bug. A missing binmode seems to
be the culprit here; let's see if this fixes it. Thanks to
ajos1 for finding the culprit!
The carriage return
thumbs its nose at me, laughing:
DOS I/O *still* sucks
Version 5.310 (2000/08/15)
Fixed a bug in the back-compat output_prefix() method of
MIME::Parser. Basically, output prefixes were not being set
through this mechanism. Thanks to ajos1 for the alert.
shift @_, ### "shift at-underscore"
or @_ will have
bogus "self" object
Added some backcompat methods, like parse_FH(). Thanks (and
apologies) to Alain Kotoujansky.
Added filenames-with-spaces support to MIME::Decoder::UU.
Thanks to Richard Pun for the suggestion.
Version 5.305 (2000/07/20)
Added MIME::Entity::parts_DFS as convenient way to "get all
parts". Thanks to Xavier Armengou for suggesting this method.
Removed the Alpha notice. Still a few features to tweak, but
those will be minor.
Version 5.303 (2000/07/07)
Fixed output bugs in new Filers. Scads of them: bad handling of
filename collisions, bad implementation of output_under(), bad
linking to results, POD errors, you name it. If this had gone
to CPAN, I'd have issued a factory recall. :-(
Errors, like beetles,
Multiply ferociously
In the small hours
Version 5.301 (2000/07/06)
READ ME BEFORE UPGRADING PAST THIS POINT! New
MIME::Parser::Filer class -- not fully backwards-compatible. In
response to demand for more-comprehensive file-output
strategies, I have decided that the best thing to do is to
split all the file-output logic (output_path(),
evil_filename(), etc.) into its own separate class, inheriting
from the new MIME::Parser::Filer class. If you override
any of the following in a MIME::Parser subclass, you will need
to change your code accordingly:
evil_filename
output_dir
output_filename
output_path
output_prefix
output_under
My sincere apologies for any inconvenience this will cause, but
it's ultimately for the best, and is quite likely the last
structural change to 5.x. Thanks to Tyson Ackland for all the
ideas. Incidentally, the new code also fixes a bug where
identically-named files in the same message could clobber each
other.
A message arrives:
"Here are three files, all named 'Foo'"
Only one survives. :-(
Fixed bug in MIME::Words header decoding. Underscores were not
being handled properly. Thanks to Dominique Unruh and Doru
Petrescu, who independently submitted the same fix within 2
hours of each other, after this bug has lain dormant for
months:
Two users, same bug,
same patch -- mere hours apart:
Truly, life is odd.
Removed escaping of underscore in regexps. Escaping the
underscore (\_) in regexps was sloppy and wrong (escaped
metacharacters may include anything in \w), and the newest
Perls warn about it. Thanks to David Dyck for bringing this to
my attention.
What, then, is a word?
Some letters, digits, and, yes:
Underscores as well
Added Force option to MIME::Entity's make_multipart. Thanks to
Bob Glickstein for suggesting this.
Numerous fixlets to example code. Thanks to Doru Petrescu for
these.
Added REQUIREMENTS section in docs. Long-overdue. Thanks to
Ingo Schmiegel for motivating this.
Version 5.211 (2000/06/24)
Fixed auto-uudecode bug. Parser was failing with "part did not
end with expected boundary" error when uuencoded entity was a
singlepart message (ironically, uuencoded parts of multiparts
worked fine). Thanks to Michael Mohlere for testing uudecode
and finding this.
The hurrying bee
Flies far for nectar, missing
The nearest flowers
Say ten thousand times:
Complex cases may succeed
Where simple ones fail
Parse errors now generate warnings. Parser errors now cause
warn()s to be generated if they are not turned into fatal
exceptions. This might be a little redundant, seeing as they
are available in the "results", but parser-warnings already
cause warn()s. I can always put in a "quiet" switch if people
complain.
Miscellaneous cleanup. Documentation of MIME::Parser improved
slightly, and a redundant warning was removed.
Version 5.210 (2000/06/20)
Change in "evil" filename. Made MIME::Parser's evil_filename
stricter by having it reject "path" characters: any of '/' '\'
':' '[' ']'.
Just as with beauty
The eye of the beholder
Is where "evil" lives.
Documentation fixes. Corrected a number of docs in MIME::Entity
which were obsoleted in the transition from 4.x to 5.x. Thanks
to Michael Fischer for pointing these out. For this one, a
special 5-5-5-5 Haiku of anagrams:
Documentation
in mutant code, O!
Edit -- no, CUT! [moan]
I meant to un-doc...
IO::Lines usage bug fixed. MIME::Entity was missing a "use
IO::Lines", which caused an exception when you tried to use the
body() method of MIME::Entity. Thanks to Hideyo Imazu and
Michael Fischer for pointing this out.
Bareword looks fine, but
Perl cries: "Whoa there... IO::Lines?
Never heard of it."
Version 5.209 (2000/06/10)
Autodetection of uuencode. You can now tell the parser to hunt
for uuencode inside what should be text parts. See
extract_uuencode() for full details. Beware: this is
largely untested at the moment. Special thanks to Michael
Mohlere at ADJE Webmail, who was the first -- and
most-insistent -- user to request this feature.
Faster parsing. Sped up the MIME::Decoder::NBit decoder quite a
bit by using a variant of the chunking trick I used for
MIME::Decoder::Base64. I suspect that the same trick (reading a
big chunk plus the next line to get a big block of lines) would
work with MIME::Decoder::QuotedPrint, but I don't have the time
or resources to check that right now (tested contributions
would be welcome). NBit encoding is more-conveniently done
line-by-line for now, because individual line lengths must be
checked.
Better use of core. MIME::Body::InCore is now used when you
build() an entity with the Data parameter, instead of
MIME::Body::Scalar.
More documentation on toolkit configuration.
Version 5.207 (2000/06/09)
Fixed whine() bug in MIME::Parser where the "warning" method
whine() was called as a static function instead of invoked as
an instance method. Thanks to Todd A. Bradfute for reporting
this.
A simple warning
Invokes method as function:
"Warning" makes us die
Version 5.206 (2000/06/08)
Ahem. Cough cough:
Way too many bugs
Thus, a self-imposed penance:
Write haiku for each
Fixed bug in MIME::Parser: the reader was not handling the odd
(but legal) case where a multipart boundary is followed by
linear whitespace. Thanks to Jon Agnew for reporting this with
the RFC citation.
Legal message fails
And 'round the globe, thousands cry:
READ THE RFC
Empty preambles are now handled properly by MIME::Entity when
printing: there is now no space between the header-terminator
and the initial boundary. Thanks to "sen_ml" for suggesting
this.
Nature hates vacuum
But please refrain from tossing
Newlines in the void
Started using Benchmark for benchmarking.
Version 5.205 (2000/06/06)
Added terminating newline to all parser messages, and fixed
small parser bug that was dropping parts when errors occurred
in certain places.
Version 5.203 (2000/06/05)
Brand new parser based on new (private) MIME::Parser::Reader
and (public) MIME::Parser::Results. Fast and yet simple and
very tolerant of bad MIME when desired. Message reporting needs
some muzzling.
MIME::Parser now has ignore_errors() set true by default.
Version 5.116 (2000/05/26)
Removed Tmpfile.t test, which was causing a bogus failure in
"make test". Now we require 5.004 for MIME::Parser anyway, so
we don't need it. Thanks to Jonathan Cohn for reporting this.
Version 5.115 (2000/05/24)
Fixed Ref.t bug, and documented how to remove parts from a
MIME::Entity.
Version 5.114 (2000/05/23)
Entity now uses MIME::Lite-style default suggested encoding.
More regression test have been added, and the "Size" tests in
Ref.t are skipped for text document (due to CRLF differences
between platforms).
Version 5.113 (2000/05/21)
Major speed and structural improvements to the parser. Major,
MAJOR thanks to Noel Burton-Krahn, Jeremy Gilbert, and Doru
Petrescu for all the patches, benchmarking, and Beta-testing!
Convenient new one-directory-per-message parsing mechanism. Now
through MIME::Parser method output_under(), you can tell the
parser that you want it to create a unique directory for each
message parsed, to hold the resulting parts.
Elimination of $', $` and $&. Wow... I still can't believe I
missed this. D'OH! Thanks to Noel Burton-Krahn for all his
patches.
Parser is more tolerant of weird EOL termination. Some
mailagents are can terminate lines with "\r\r\n". We're okay
with that now when we extract the header. Thanks to Joao
Fonseca for pointing this out.
Parser is tolerant of "From " lines in headers. Thanks to
Joachim Wieland, Anthony Hinsinger, Marius Stan, and numerous
others.
Parser catches syntax errors in headers. Thanks to Russell P.
Sutherland for catching this.
Parser no longer warns when subtype is undefined. Thanks to
Eric-Olivier Le Bigot for his fix.
Better integration with Mail::Internet. For example, smtpsend()
should work fine. Thanks to Michael Fischer and others for the
patch.
Miscellaneous cleanup. Thanks to Marcus Brinkmann for
additional helpful input. Thanks to Klaus Seidenfaden for good
feedback on 5.x Alpha!
ones to do, and each compiled and installed/de-installed apparently
correctly.
As a side effect of the dynamic PLIST, we no longer need to have separate
-static and -shared PLISTs. It's now easier than ever to make a perl5
package for NetBSD :)