<html>
<head>
<title>Ultimate ToolBox Change History</title>
<style>
BODY, P, H1, H2, H3, H4, H5, H6, LI, TD, TH, DD, DT
{
font-family: Verdana, Helvetica, Arial, sans-serif;
font-size: 10pt;
color: black;
}
BODY
{
background-color: #ffffff;
color: #000000;
}
LI,UL,OL
{
list-style-image: none;
}
H1, H2, H3, H4, H5, TH
{
font-weight: bold;
}
H2, H3, H4, H5
{
color: #009999;
}
H1
{
font-size: 16pt;
color: #007777;
}
H2
{
font-size: 13pt;
}
H3
{
font-family: Arial, sans-serif;
font-size: 11pt;
}
H4
{
font-size: 10pt;
margin-bottom: 2px;
}
H5
{
font-size: 9pt;
margin-bottom: 2px;
}
H6
{
color: #626262;
font-size: 65%;
font-weight: normal;
}
CODE
{
color: #1111BB;
font-family: "Courier New", Courier, mono;
font-weight: bold;
}</style>
</head>
<body>
<h1>Ultimate TCP/IP Change History</h1>
<h2>Version 4.2 - Update 01</h2>
<h3>
<span id="intelliTXT">
Changes and fixes for 64-bit compilation.</span></h3>
<span id="intelliTXT0">
<p>The major source file changes referenced in this update should all be
annotated with 'v4.2 - update 01' in comments. The scope of these changes is for
the most part concerned with checking for issues arising from VS2008 and 64-bit
compilation.</p>
<p>The goal of this update is to test VS2008 and 64-bit compilation of the core source
files, while retaining backward compatibility with VC6, VS2003, and VS2005.
VS2008 64-bit configurations were created for testing using the x64 cross compiler on Win32
(Windows XP SP2) - these added configurations
are not included in this download.</span></p>
<p>The projects have not been run on a Win64 platform - this update is just
intended as a starting point for testing. New warnings introduced by the x64
builds have been left in, pending run time tests. Comments welcome.</p>
<p>A new file was added (UTCP64Bit.h) to the main Include directory to
centralize macro redefinitions. For the History control and security certificate
related dialogs some minor return value changes for DLGPROC and WNDPROC return
values were put in place. </p>
<h2>Version 4.2 - Initial Code Project release</h2>
<p>The main focus of Ultimate TCP/IP Version 4.2 has been to update the
source code for use with Microsoft Visual Studio 2005, while maintaining
compatibility with Visual Studio 6.0. </p>
<h4>Unicode builds:</h4>
<ul style="list-style: disc;"
type=disc>
<li class=kadov-p><p style="font-style: italic;">
<span style="font-style: normal">New Visual C++ 8.0
projects now default to Unicode compilation</span>.</p></li>
</ul>
<p style="margin-left: 40px;">Much of the Ultimate TCP/IP code is char
based, having its origins in the implementation of several DOD RFCs dealing
primarily with transmission protocols using 7 and 8 bit ASCII based command
sets and data formats. For this reason updating the code to support compilation
under unicode constitutes a special case, in that unlike most Windows
libraries it is desirable to maintain the core code as char based while
providing a unicode interface where necessary for ease of use within a
wide char build.</p>
<p style="margin-left: 40px;"><!--kadov_tag{{<spaces>}}-->&nbsp;<!--kadov_tag{{</spaces>}}-->In
some cases, it made sense to rework the classes for full unicode compatibility
substituting _TCHAR for char and using the generic text mappings. Other
classes (especially those encapsulating ANSI based internet protocols)
were modified to provide the user with wide char overloads when used in
a unicode build. This was especially important for those classes where
a wide char version of a function might be convenient for the user, but
the char equivalent will still be called from char based internal code.</p>
<p style="margin-left: 40px;">Some functions (overrides) that act as notification
callbacks concerning events where protocol data is returned will still
return ANSI text. <!--kadov_tag{{<spaces>}}-->&nbsp;<!--kadov_tag{{</spaces>}}--></p>
<h4>Warnings:</h4>
<ul style="list-style: disc;"
type=disc>
<li style="margin-left: -20px;"
class=kadov-p><p style="margin-left: 40px;">A primary goal of the
Ultimate TCP/IP 4.2 release was clean compilation at Warning Level 4 in
both VS2005 and VS6.0.</p></li>
</ul>
<p style="margin-left: 40px;">There were several issues to be addressed
here. It was found that many areas of the code files evoked warnings at
level 3 in VS8 that are either new to VS7/8 or VC6 level 4 warnings re-classified
as level 3. Also, there are new warnings dealing with 64 bit portability
(on by default in new VS2005 projects).</p>
<p style="margin-left: 40px;">Level 4 warnings invoked by the STL code
that were present in VC6 builds have been addressed.</p>
<p style="margin-left: 40px;">With regard to 64 bit portability, Ultimate
TCP/IP 4.2 is not intended to provide full 64 bit compilation, though
some changes were made to suppress these warnings. In some cases functions
taking integer parameters to designate buffer sizes have been updated
to take size_t, which should help users of the class using values returned
from strlen etc. to avoid warnings when calling the UT code. Future releases
may address this issue more fully.</p>
<p style="margin-left: 40px;"><span style="font-style: italic;">Note: Some
portions of the code using static functions may give rise to warning C4710
(function not inlined). This warning occurs after the compiler has read
the last line of code in the compiland, and can only be discarded on a
per-project basis.</span> </p>
<h4>Updates to the C Run Time:</h4>
<ul style="list-style: disc;"
type=disc>
<li class=kadov-p><p>With the introduction of VC8, many CRT string
handling functions are deprecated in favor of their safe equivalents.
</p></li>
</ul>
<p style="margin-left: 40px;">Version 4.2 only partially addresses this
issue, preferring to retain (for now) the non-safe string functions. Pragmas
are provided to disable this warning in the core Ultimate TCP/IP code
on a per file basis - <!--kadov_tag{{<spaces>}}-->&nbsp;<!--kadov_tag{{</spaces>}}-->these
pragmas should <span style="font-style: italic;">not</span> affect warning
settings beyond the scope of each compiland. Future versions of Ultimate
TCP-IP should address this issue more fully, as do Ultimate Toolbox and
Ultimate Grid.</p>
<p style="margin-left: 40px;"><span>We have tried to limit the use of pragmas
in disabling warnings for the Ultimate TCP/IP code. Beyond the safe string
warnings, most pragmas dealing with warnings should be disabling warnings
arising from the STL or SDK. </span></p>
<ul style="list-style: disc;"
type=disc>
<li class=kadov-p><p>Several POSIX function names were deprecated in
favor of their ISO equivalents.</p></li>
</ul>
<p style="margin-left: 40px;">All functions generating warning C4996 related
to their POSIX name declarations were changed to use their ISO name declaration.
This change is backward compatible to VC6. Some of these functions remain
deprecated in favor of their safe counterparts.</p>
<ul style="list-style: disc;"
type=disc>
<li class=kadov-p><p>Files referencing headers no longer included in
VC8 were updated (e.g. iostream vs iostream.h). This is change does not
break VC6.0 compatibility.</p></li>
</ul>
<h4>Changes to the Platform SDK</h4>
<ul style="list-style: disc;"
type=disc>
<li class=kadov-p><p>There have been changes to the Platfom SDK with
the release of Visual Studio 2005 and the Platform SDK 2003. </p></li>
</ul>
<p style="margin-left: 40px;">If you are using the Ultimate TCP-IP secure
client and server classes with 2005 it is no longer necessary to install
a separate version of the Platform SDK to compile the UTSecureLayer.DLL.
However, some key headers and lib files required by Visual Studio 6.0
are no longer contained in the revised Platform SDK 2003. <!--kadov_tag{{<spaces>}}-->&nbsp;<span
style="font-weight: bold;"><!--kadov_tag{{</spaces>}}-->VC6.0 users compiling
the secure code will need to access a previous version of the Platform
SDK</span>.</p>
<h4>UTSecureLayer.DLL builds:</h4>
<ul style="list-style: disc;"
type=disc>
<li class=kadov-p><p>With version 4.2, the UTSecureLayer builds have
been renamed based on character set and release/debug version. </p></li>
</ul>
<p style="margin-left: 40px;">Where previously code built against the secure
DLL had to assume that the build was compatible with the current settings,
we've separated it into UTSecureLayer.DLL, <!--kadov_tag{{<spaces>}}-->&nbsp;<!--kadov_tag{{</spaces>}}-->UTSecureLayerU.DLL,
<!--kadov_tag{{<spaces>}}-->&nbsp;<!--kadov_tag{{</spaces>}}-->UTSecureLayerD.DLL,
<!--kadov_tag{{<spaces>}}-->&nbsp;<!--kadov_tag{{</spaces>}}-->UTSecureLayerUD.DLL
based on Unicode / Debug settings. Some project settings may need to be
reset to reflect this.</p>
<h4>Breaking changes:</h4>
<ul style="list-style: disc;"
type=disc>
<li class=kadov-p><p>CUT_DataSource and derived classes</p></li>
</ul>
<p style="margin-left: 40px;">In preparing the Ultimate TCP/IP for wide
char compilation, most file names and paths were changed to use _TCHAR
strings, and this is reflected in the interfaces to the datasouces which
take file names.</p>
<p style="margin-left: 40px;">The interfaces that were specifying buffer
or data lengths as unsigned int now take size_t, which may require changes
to existing derived classes.</p>
<p style="margin-left: 40px;">The datasource classes themselves remain
primarily char based, as they are mostly used internally by ANSI based
protocol classes. In future we may provide wide char or _TCHAR based classes.</p>
<p style="margin-left: 40px;">The strings returned in the UT_ARTICLEINFO
structure will be wide char for _UNICODE builds. This may break code that
was attempting to decode strings with calls to CUT_HeaderEncoding methods,
which take only char. For this reason, and added convenience, the strings
returned in this structure will have been decoded if necessary, and the
structure now contains a text representation of the associated character
set for the applicable fields. Note that only Author and Subject are routinely
encoded in an NNTP header.</p>
<ul style="list-style: disc;"
type=disc>
<li class=kadov-p><p style="margin-left: 0px;">CUT_Msg, CUT_HeaderEncoding
- decoding functions that previously took a reference to an LPCTSTR to
return the charset now take an LPSTR that should be declared/allocated
with space to receive the charset.</p></li>
</ul>
<h4>Miscellaneous fixes:</h4>
<ul style="list-style: disc;"
type=disc>
<li class=kadov-p><p>CUT_SMTPClient: Was failing to include Reply-To
header if set in CUT_Msg when sending.</p></li>
<li class=kadov-p><p>CUT_NNTPClient: UT_ARTICLEINFO now returns correct
References header string.</p></li>
</ul>
</body>
</html>
</html>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.

Share

About the Author

In January 2005, David Cunningham and Chris Maunder created TheUltimateToolbox.com, a new group dedicated to the continued development, support and growth of Dundas Software’s award winning line of MFC, C++ and ActiveX control products.

Ultimate Grid for MFC, Ultimate Toolbox for MFC, and Ultimate TCP/IP have been stalwarts of C++/MFC development for a decade. Thousands of developers have used these products to speed their time to market, improve the quality of their finished products, and enhance the reliability and flexibility of their software.