|
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!
|