SPECIAL NOTES ABOUT THIS UPDATE:
Official Release of v10.0 series starting with build 500.
Plug & Play: If you use 3rd-party applications that load Wildcat! RPC DLLs outside of the main Wildcat! installation path (for example, moved copies in external door directories), you may encounter a version mismatch between the new 500 DLLs and older 454 DLLs. Replace those external copies with the updated 500 RPC DLLs.
Changes, New Features and Enhancements by Wildcat! Component
WCSFTP (Wildcat! Secure FTP)
- NEW: Wildcat! SFTP Server (wcoSFTP.dll) -- file transfer over SSH
(500.3 26.9.16).
A new wcOnline hosting module serving the Wildcat! file database over
SFTP, loaded alongside the FTP, TELNET, POP3 and WEB servers.
It shares the FTP file namespace, so a trading partner moving from
wcFTP sees the same file groups, file areas and paths. The wcBASIC
hooks fall back to their FTP equivalents -- an existing compiled
ftpscanfile.wcx or ftplogon.wcx runs unchanged with no new file to
write.
To enable it, set the SFTP Port on wcConfig | Computers for the
machine that should run it, then grant the access profiles on
wcConfig | SFTP Server | Access.
Requires libssh.dll beside wcoSFTP.dll. It ships as a separate DLL
to satisfy the LGPL, and the module will not load without it.
Password authentication only in this build.
Wildcat! SFTP Server Setup and Configuration
WCSDK (Wildcat! Native Language Software Development Kit)
- NEW: WcFreeMemory() -- releases a buffer wcsrv2.dll allocated on the
caller's behalf (500.3 26.9.2).
A few SDK functions hand back memory that the RPC client stub
allocated. FileSearch() is the current example: it returns an array
of 64-bit values, one per hit, and the caller owns that array.
A C or C++ client built against the same runtime can release it with
free(). A client written in another language cannot. Python
(wcPAPI/ctypes), C# and VB.NET through P/Invoke, and anything else
binding wcsrv2.dll directly have no access to the DLL's heap, and
until now had no correct way to release the buffer at all.
WcFreeMemory() frees on the correct side of that boundary:
void APIENTRY WcFreeMemory(void *pBuffer);
Typical use with FileSearch():
TFileSearchRecord *p = NULL;
DWORD n = 0;
if (FileSearch(spec, n, (unsigned __int64 *&)p)) {
for (DWORD i = 0; i < n; i++) {
TFileRecord f = {0};
if (GetFileRecAbsolute((p+i)->ref, f)) {
// (p+i)->area is the file area, f.Name the file name
}
}
WcFreeMemory(p);
}
This is a local call. It never contacts wcServer, so it behaves the
same whether the server is local or remote, and a NULL pointer is
ignored. Do not pass a pointer wcsrv2.dll did not allocate.
Clients that reach FileSearch() through wcvb.dll (VB.NET, C#) or the
PHP extension do not need it -- those wrappers copy the results into
a native array and release the buffer themselves.
Requires wcsrv2.dll 10.0.500.3 or later. The wcPAPI Python package
is versioned together with the DLL for this reason.
PXWIN (Platinum Xpress)
For the complete list of PX/WIN changes organized by component see: PX/WIN Version 10.0 Build 500.3 Changes PX/WIN Version 10.0 Build 500.2 Changes