|
|
|
|
|
|
|
MIME++ Change Log
|
|
|
|
=================
|
|
|
|
|
|
|
|
September 1, 1997
|
|
|
|
|
|
|
|
o Convenience member functions added to DwMediaType to access the name
|
|
|
|
parameter
|
|
|
|
|
|
|
|
o Added configuration option to typedef DwBool to bool
|
|
|
|
|
|
|
|
o Compiles as a DLL under Borland C++ 5.0 (as well as VC++ 4 and 5). I am
|
|
|
|
not completely convinced that I got the correct command line switches for
|
|
|
|
BCC32. If you use Borland, you might want to double check the makefile.
|
|
|
|
|
|
|
|
o Will handle multipart boundary parameters from nonstandard MIME
|
|
|
|
implementations that quote the boundary parameters with single quotes.
|
|
|
|
(This is in violation of the MIME++ standard.)
|
|
|
|
|
|
|
|
o Fixed a bug where CRLF would be included in the full name part of a
|
|
|
|
mailbox if the name was quoted and split across two lines
|
|
|
|
|
|
|
|
o DwBinhex class for performing conversion to and from Binhex 4.0 format
|
|
|
|
for Macintosh files.
|
|
|
|
|
|
|
|
o Much of the documentation has been rewritten or brought up to date.
|
|
|
|
|
|
|
|
o Minor changes to DwUuencode.
|
|
|
|
|
|
|
|
o The deprecated member functions in DwString are no longer available.
|
|
|
|
|
|
|
|
|
|
|
|
July 26, 1997
|
|
|
|
|
|
|
|
o New classes in this release:
|
|
|
|
DwUuencode - for uuencode and uudecode operations
|
|
|
|
DwBoyerMoore - for BoyerMoore algorithm in string searches
|
|
|
|
DwProtocolClient - Base class for SMTP, NNTP, and POP protocol classes
|
|
|
|
DwSmtpClient - Implements client side of SMTP session
|
|
|
|
DwNntpClient - Implements client side of NNTP session
|
|
|
|
DwPopClient - Implements client side of POP session
|
|
|
|
|
|
|
|
o Full support for Win32 with MS Visual C++ 4 or 5, and Borland C++.
|
|
|
|
|
|
|
|
o DwHeader renamed to DwHeaders to eliminate confusion, since people usually
|
|
|
|
use the term header to refer to a single header field.
|
|
|
|
|
|
|
|
o Compiles as a DLL under Visual C++ (default option)
|
|
|
|
|
|
|
|
o There is a config.h file for establishing configuration options at
|
|
|
|
compile time. This is safer than requiring you to specify options as
|
|
|
|
defines in a makefile.
|
|
|
|
|
|
|
|
o Support for namespaces. Alternatively, global enums are encapsulated
|
|
|
|
in a class declaration.
|
|
|
|
|
|
|
|
Mar 29, 1997
|
|
|
|
|
|
|
|
o The class DwString has been rewritten almost from scratch and is much
|
|
|
|
closer to the specification for the ANSI string class. Eventually, it
|
|
|
|
should be possible to typedef DwString to the ANSI string class, thereby
|
|
|
|
making MIME++ entirely compatible with the standard C++ library. (I did
|
|
|
|
actually do this successfully a few weeks ago, but I have not tried it
|
|
|
|
again since the new DwString was completed.) Most of the old member
|
|
|
|
functions are now obsolete. You can still compile them if you define
|
|
|
|
the right macro (see the makefile).
|
|
|
|
|
|
|
|
o The implementations of many classes were changed to permit them to be
|
|
|
|
used with the new DwString class. (They should also work with the
|
|
|
|
ANSI string class, if DwString is typedef-ed.)
|
|
|
|
|
|
|
|
o The documentation is more complete. Utility functions for content
|
|
|
|
transfer encoding, end-of-line marker conversion, etc. are now included
|
|
|
|
in the HTML documentation. New <FONT> tags in HTML 3.2 are used to
|
|
|
|
add color. The idea is not so much to make the man pages look snazzy;
|
|
|
|
I chose colors to make them more readable.
|
|
|
|
|
|
|
|
Feb 6, 1997
|
|
|
|
|
|
|
|
o Added new class DwDispositionType, which represents a disposition-type
|
|
|
|
as described in RFC-1806.
|
|
|
|
|
|
|
|
o Changed the name of DwContentType to DwMediaType, which conforms to usage
|
|
|
|
in RFC-2068 (HTTP) and is not incompatible with RFC-2045 and RFC-2046.
|
|
|
|
|
|
|
|
o Changed the name of DwContentTransferEncoding to DwMechanism, which
|
|
|
|
conforms to the BNF term "mechanism" in RFC-2045.
|
|
|
|
|
|
|
|
Jan 28, 1997
|
|
|
|
|
|
|
|
o Added utility functions for doing end-of-line marker conversions:
|
|
|
|
|
|
|
|
int DwToCrLfEol(const DwString& aSrcStr, DwString& aDestStr);
|
|
|
|
int DwToLfEol(const DwString& aSrcStr, DwString& aDestStr);
|
|
|
|
int DwToCrEol(const DwString& aSrcStr, DwString& aDestStr);
|
|
|
|
int DwToLocalEol(const DwString& aSrcStr, DwString& aDestStr);
|
|
|
|
|
|
|
|
Jan 25, 1997
|
|
|
|
|
|
|
|
o Parsers for entities (entity.cpp) and bodies (body.cpp) changed to handle
|
|
|
|
CR LF end-of-line (DOS and MIME) in addition to LF end-of-line (UNIX
|
|
|
|
and C).
|
|
|
|
|
|
|
|
o Changed multipart body parser to correctly parse boundaries that have
|
|
|
|
white space at end of line (transport-padding, in the BNF of RFC-2046).
|
|
|
|
With this change, any line that starts with the dash-boundary will be
|
|
|
|
recognized as a boundary, even if the extraneous characters are not
|
|
|
|
white space (transport-padding). This should be okay because the MIME
|
|
|
|
spec says that the boundary should not appear in the entity.
|
|
|
|
|
|
|
|
Jan 14, 1997
|
|
|
|
|
|
|
|
o The library may be compiled as a production version, a development
|
|
|
|
version, or a debug version. The production version tries to recover
|
|
|
|
from errors whenever possible: this could mean just returning silently
|
|
|
|
from a function with a bad argument value. The development version has
|
|
|
|
assert statements enabled to detect bad argument values or other
|
|
|
|
exceptional conditions. It will dump core so that you can examine
|
|
|
|
the state after termination by using a debugger. The debug version is
|
|
|
|
intended to be used when you know a bug exists and you have to find it.
|
|
|
|
In the debug version, virtually all classes have a CheckInvariants()
|
|
|
|
member function that will abort if one of the invariants in an object
|
|
|
|
is violated. The development version and production version are
|
|
|
|
link compatible -- you don't have to recompile your source, just relink
|
|
|
|
with the library. The debug version is not guaranteed to be link
|
|
|
|
compatible.
|
|
|
|
|
|
|
|
o Added a mechanism to detect objects that are deleted more than once.
|
|
|
|
|
|
|
|
o Some bugs were fixed.
|
|
|
|
|
|
|
|
o Rewrote the makefile, which now includes an 'install' target to copy files
|
|
|
|
to /usr/local/include/mimepp and /usr/local/lib.
|
|
|
|
|
|
|
|
o Removed the 'dw' prefix from most of the files. The include files are
|
|
|
|
installed into a mimepp directory. The include preprocessor lines in
|
|
|
|
the source code have the directory prefixed
|
|
|
|
(e.g. #include <mimepp/mimepp.h>).
|
|
|
|
|
|
|
|
o Created a mimepp.h file that includes all header files required for using
|
|
|
|
the library. You can just put #include <mimepp/mimepp.h> at the top of
|
|
|
|
your source code.
|
|
|
|
|
|
|
|
Nov 17, 1996
|
|
|
|
|
|
|
|
o DwMessageComponent has new protected data member mClassName and new
|
|
|
|
member function ClassName().
|
|
|
|
|
|
|
|
o DwContentType has new convenience member function CreateBoundary(), which
|
|
|
|
applies to multipart entities only.
|
|
|
|
|
|
|
|
o DwMessageId is now DwMsgId, which conforms to the RFC-822 BNF grammar.
|
|
|
|
|
|
|
|
o Lots of changes to DwHeader.
|
|
|
|
|
|
|
|
+ DwHeader::Interpret() is gone. It's been replaced by
|
|
|
|
DwField::CreateFieldBody().
|
|
|
|
|
|
|
|
+ Access to all RFC-822, RFC-1036, and RFC-1521 header fields via
|
|
|
|
member functions (DwHeader::To(), DwHeader::From(), ...).
|
|
|
|
|
|
|
|
+ New member functions to test for the presence of standard header fields.
|
|
|
|
(DwHeader::HasTo(), DwHeader::HasFrom(), ...).
|
|
|
|
|
|
|
|
+ Various other changes to DwHeader's interface, mostly dealing with
|
|
|
|
adding or removing fields. (Advanced functions.)
|
|
|
|
|
|
|
|
o Added member function CreateFieldBody() to DwField.
|
|
|
|
|
|
|
|
o Improvements to the wrapper classes used in the examples.
|
|
|
|
|
|
|
|
o New wrapper class MessageWithAttachments, used in Example 5 (exampl05.cpp).
|
|
|
|
|
|
|
|
o The documentation now includes a tutorial.
|
|
|
|
|
|
|
|
o All *.h files have been extensively commented. These files will serve
|
|
|
|
as a poor man's reference manual until the real reference manual is
|
|
|
|
completed.
|
|
|
|
|