Revision history for Perl extension Convert::TNEF. 0.17 Sun Feb 24 2001 - It appears that messages no longer need start with a TnefVersion attribute, and a message without this attribute triggered a bug ('datahandle' method called on uninitialized value) found by Randy Diffenderfer. - Although the MSDN TNEF Stream syntax page makes it look like TnefVersion must be the first attribute if it appears, and MessageClass must be the first or second attribute if it appears, I'm not going to check for this because then my test file has MessageClass as the third attribute. - Got rid of '_equal' function. The only reason to worry about warnings when comparing undef is if there's a read error, and then a warning ought to be ok anyway. - Long overdue perltidy format cleanup. 0.16 Tue Jul 31 2001 - Simplified main loop some more. Don't need to check for end of processing twice. - Prefixed 'private' functions with underscore character. - changed a couple of 'methods' which didn't use '$self' and weren't documented as methods into 'private' functions. 0.15 Tue Jul 31 2001 - Finally combined message and attachment parsing loops. - Removed the '|| []' from the attachment() method. I'm storing an arrayref unconditionally in the TNEF object, so there should be no need for this. Also now returns ref if not called in list context. 0.14 Mon Jul 30 2001 - Subclass message and attachment portions of TNEF object. - Found bug in saving the size of message attributes. 0.12 Tue May 29 2001 - We're not using Autoloader, so no need to 'use' it. 0.11 Tue May 29 2001 - Moved previously 'autoload' functions so that they're all just loaded. Its a small module anyway, so there was no real need for it, and it should cut down on problems for people who don't install this module properly :) 0.10 Wed Jan 17 2001 - Stripped carriage returns from all files (last edit was on Windows). 0.09 Wed Jan 10 2001 - Fixed message method. Added more tests to test suite. 0.08 Fri Jun 17 2000 - Added a bit more file format error checking. 0.07 Fri Jun 16 2000 - Just some code cleanup in reading the attachment part of the file. When there's more than one attachment in a file, it is now more efficient than it used to be. 0.06 Thu Jun 15 2000 - size() method is fixed. - data(), name() and longname() methods will now return the undefined value if the data does not exist in the attachment. - Not a change, just a realization that the TNEF 'attAttachment' attribute where the long filename and display name resides is really a series of MAPI properties. Maybe there ought to be a MAPI module to parse it? Currently, the longname() attribute is returning the MAPI display name property in this field. See previous changes for why. 0.05 Tue May 16 16:30:00 2000 - Both name() and longname() now strip trailing null characters. This doesn't seem to make a difference when creating a file, but it does in string comparison. - longname() works much better now. It no longer depends on finding the 'AttachTitle' attribute (shortname) first (which was a sorry hack of a way to do it). I've looked at several different TNEF example docs, from my own creation and from Mark Simpson's 'tnef' utility, so I'm fairly certain about it now. The actual file name appears twice in the field, but one of them is not always the full name (if there's a space in the name?). So we get the other instance of the name. If someone could look through the MS Platform SDK and see if the 'official' way to parse this field is in there, it'd be much appreciated. - Fixed the 'make test', which really wasn't testing what it was supposed to, and added another test while I was at it. 0.04 Thu May 11 16:00:00 2000 - The longname method should work better now. I still wish I could be 100% sure about the way I'm doing it. I'm sure its not the way Outlook does it; it'd be nice to know how its supposed to be done. 0.03 Tue May 8 15:00:00 2000 - There was two purge methods. I purged one of them. - fixed a die() in the parse method to return a failure status instead. - Took out the subclasses which were just aliases for MIME::Body::*, and weren't really proper subclasses anyway. I forget why I did it that way, maybe I planned on making some extra methods later, or just to see if it worked. There really should be separate classes for a TNEF object, and for attachments/messages in the TNEF object, maybe someday I'll get around to it. 0.02 Mon Dec 12 17:30:00 1999 - fixed and cleaned up some of the debug output. - had the bright idea in the first release of including a name() method for attachments and put it in the documentation, but neglected to actually include the method in the code. - Found out that the 'AttachTitle' attribute returns only the short (8 char + 3 char extension) version of the filename, so I included a 'longname' method which does its best to get the long version of the filename. This is extracted out of the 'Attachment' attribute data, which is a binary field, and I don't really know how to parse this field, but this seems to work to get the name. 0.01 Mon Nov 29 14:26:32 1999 - original version; created by h2xs 1.18