1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
|
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.
|