From a360bf900ff7030d1f8e77fb7dbc92f8d0f7379b Mon Sep 17 00:00:00 2001 From: Marian Krivos Date: Tue, 23 Aug 2011 09:21:45 +0000 Subject: [PATCH] trunk/branch integration: fix makefile README CHANGELOG components configure etc. --- CHANGELOG | 839 +++++++++++++++++++++++++++++++++++++++++++++++++++ CONTRIBUTORS | 28 +- Makefile | 55 +++- README | 178 ++++++++--- buildwin.cmd | 276 +++++++++++------ components | 2 + configure | 172 +++++++++-- libversion | 2 +- 8 files changed, 1386 insertions(+), 166 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 835733596..d4ba4cb52 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,844 @@ This is the changelog file for the POCO C++ Libraries. + +Release 1.4.2 (2011-08-xx) +========================== + +- added Poco::DateTimeFormat::ISO8601_FRAC_FORMAT +- added new Poco::DateTimeFormatter and Poco::DateTimeParser format specifier: + %s for seconds with optional fractions of a second +- fixed a problem with ioctl() on BSD platforms (including OS X) where the + second argument to ioctl() is unsigned long instead of int, causing bad + things on a OS X 64-bit kernel. +- fixed a potential endless loop when enumerating IPv6 network addresses + (reported by Laurent Carcagno) +- new compile-time config option on Windows to set thread names in + debugger. Enable with -DPOCO_WIN32_DEBUGGER_THREAD_NAMES. Available + only in debug builds. +- Cipher can now create Base64 and HexBinary encoded output without linefeeds + (suitable for use in cookies, etc.) +- added Poco::Path::popFrontDirectory() +- improved VxWorks support +- IPv6 fixes: added proper scope id handling in IPAddress, SocketAddress + and related classes. +- Added Poco::Net::ServerSocket::bind6() which allows control over the + IPPROTO_IPV6/IPV6_V6ONLY socket option. +- Removed Poco::MD2Engine class due to licensing issues (the + license for the MD2 code from RSA only allows non-commercial + use). Note that the MD4 and MD5 code from RSA does not have + this issue. +- fixed a Net HTTP client testsuite issue where some tests might + have failed due to prematurely aborted connections by + the HTTPTestServer. +- Poco::Net::SocketAddress: when there is more than one address + returned by a DNS lookup for a name, IPv4 addresses will be + preferred to IPv6 ones. +- NetworkInterface::list() now also returns IPv4 interfaces on Windows when + built with -DPOCO_HAVE_IPv6 +- XMLWriter: fixed a bug with attribute namespaces (no namespace prefix + written if attribute namespace is the same as element namespace) +- fixed SF# 3378588: Mismatched new[]/delete (in RSAEncryptImpl and RSADecryptImpl) +- fixed SF# 3212954 (OpenSSLInitializer::uninitialize() crash) and + SF# 3196862 (Static OpenSSLInitializer instance causes Windows deadlocks) by + remoting the static Poco::Crypto::OpenSSLInitializer instance. Automatic OpenSSL + initialization is now done through Poco::Crypto::Cipher, Poco::Crypto::CipherKey, + Poco::Crypto::X509Certificate, Poco::Net::Context classes; however, it is still + recommended to call Poco::Crypto::initializeCrypto() and + Poco::Crypto::uninitializeCrypto() early at application startup, and late at + shutdown respectively (or Poco::Net::initializeSSL()/Poco::Net::uninitializeSSL() + if the NetSSL library is used) to avoid multiple full OpenSSL init/uninit cycles + during application runtime. +- Poco::Logger now also support a symbolic log level "none" + (for use with setLevel()) that disables logging completely + for that Logger (equivalent to setLevel(0)). +- Added experimental Android support, using the existing gmake-based + build system. +- fixed SF# 3288584: DateTimeFormatter link error +- fixed SF# 3187117: Typo in InflatingInputStream doc +- fixed SF# 3309731: _WIN32_WCE comparison should be with 0x600 not 600 +- fixed SF# 3393026: RegularExpression.h identical enum value +- fixed SF# 3274222: AtomicCounter's postfix operators aren't atomic on Windows +- fixed SF# 3317177: Handle leak on windows +- fixed SF# 3181882: Poco::URI::getPathEtc() double-encodes query +- fixed SF# 3379935: ThreadPool Start Bug +- fixed SF# 3354451: Poco::Format::parsePrec never sets the precision to zero +- fixed SF# 3387258: _MAX_PATH used but unknown in Path_WIN32 +- fixed a problem in RSAKeyImpl where direct access to the RSA in a EVP_PKEY + would no longer work in recent OpenSSL versions. Using EVP_PKEY_get1_RSA() + fixes the issue. +- added Poco::Crypto::EncryptingInputStream, Poco::Crypto::EncryptingOutputStream, + Poco::Crypto::DecryptingInputStream and Poco::Crypto::DecryptingOutputStream. +- fixed SF# 3148126: HTTPSClientSession destructor (!) throws an IOException +- fixed SF# 3178098: Add constructor to Poco::TemporaryFile to specify directory +- fixed SF# 3175310: Absolute path when device +- fixed SF# 3301207: Guided tour example contradicts apidoc (API doc was wrong) +- Poco::Net::HTTPMessage::setContentLength() and Poco::Net::HTTPMessage::getContentLength() now + use std::streamsize instead of int. This enables 64-bit Content-Length support at least + on 64-bit platforms. +- fixed SF# 3177530: TemporaryFile::tempName() + glob bug on xp +- fixed SF# 3177372: FileChannel documentation inconsistency +- added %E format specifier to Poco::PattermFormatter (epoch time in seconds + since midnight, January 1 1970) +- On Windows, Poco::Util::ServerApplication now supports a /description command + line argument for specifying a service description (together with /registerService) +- added Poco::Util::WinService::setDescription() and + Poco::Util::WinService::getDescription() +- fixed SF# 3155477: Incorrect URI path handling +- fixed SF# 3309736: Extended Exception macros to set default exception code + new macro is named POCO_DECLARE_EXCEPTION_CODE +- added getter functions for modulus and exponents to Poco::Crypto::RSAKey. +- added Poco::Net::SocketAddress::operator == () and + Poco::Net::SocketAddress::operator != () +- fixed SF# 3182746: IPAddress.cpp IPv6 bug on big-endian +- fixed SF# 3196961: Unix daemon fails to loadConfiguration() if started from cwd +- fixed SF# 3393700: NotificationCenter may call a removed observer and crash. +- Reworked implementation of the events framework (Poco::BasicEvent and friends). + The framework is now completely multithreading save (even in the case that + an event subscriber object unsubscribes and is deleted while an event is + being dispatched). Also, the restriction that any object can only register + one delegate for each event has been removed. For most cases, dispatching + events should be faster, as dispatching an event now needs less dynamic memory + allocations. +- fixed SF# 3178109: getNodeByPath() changes: + getNodeByPath() and getNodeByPathNS() have been moved to Poco::XML::Node. + Furthermore, when invoked on a Poco::XML::Document, the behavior has changed + so that the document element is now included when traversing the path (previously, + traversal would start at the document element, now it starts at the document). + The path expression can now start with a double-slash, which results in a recursive + search for the path's first element in the DOM tree. + + +Release 1.4.1p1 (2011-02-08) +============================ + +- Poco::Mutex is now a recursive mutex again on Linux + (this was caused by an unfortunate feature test for + PTHREAD_MUTEX_RECURSIVE which did not work on Linux + as PTHREAD_MUTEX_RECURSIVE is an enum value and not + a macro) +- Poco::Net::SecureSocketImpl::abort() now only shuts + down the underlying socket connection and does not free + the SSL object, due to multithreading issues. + + +Release 1.4.1 (2011-01-29) +========================== + +- fixed SF# 3150223: Poco::BinaryReader cannot read std::vector correctly +- fixed SF# 3146326: SharedMemory issue +- made Poco::Net::HTTPSession::abort() virtual +- added Poco::Net::SecureStreamSocket::abort() to immediately close + a SSL/TLS connection without performing an orderly SSL/TLS shutdown. +- fixed SF# 3148126: HTTPSClientSession destructor (!) throws an IOException. + Added try/catch block to Poco::Net::SecureSocketImpl destructor. +- added additional constructor to Poco::Net::HTTPSClientSession, taking + both a socket and a session object. +- Poco::Net::HTTPSession::abort() now also can be used with a + Poco::Net::HTTPSClientSession. +- fixed SF# 3148045: make clean and distclean issues +- changed Data library names on Unix/Linux platforms to + match the names on Windows (PocoSQLite -> PocoDataSQLite, + PocoMySQL -> PocoDataMySQL, PocoODBC -> PocoDataODBC) +- added additional options to configure script +- added additional documentation to Poco::Net::HTTPClientSession +- Poco::Net::HTTPClientSession::receiveResponse() closes the connection + if an exception is thrown while reading the response header. + This ensures that a new connection will be set up for the next request + if persistent connections are used. +- improved Poco::Net::MultipartDecoder performance by reading directly from streambuf +- improved performance of Poco::Base64Encoder, Poco::Base64Decoder, + Poco::HexBinaryEncoder and Poco::HexBinaryDecoder by working directly with the + given stream's streambuf. +- improved performance of MessageHeader::read() by reading directly from streambuf + instead of istream. +- it is now possible to specify additional MIME part header fields + for a MIME part through the Poco::Net::PartSource class. +- upgraded SQLite to release 3.7.4 +- added experimental VxWorks support for VxWorks 5.5.1/Tornado 2.2 and + newer. Please see the VxWorks Platform Notes in the reference documentation + for more information. Currently, the VxWorks is untested; full support + will be available in release 1.4.2. +- fixed SF# 3165918: Poco::DynamicAny fails to convert from string to float +- fixed SF# 3165910: Poco::Net::MessageHeader does not accept HTTP conforming header +- made Poco::Task::cancel() virtual so that tasks can implement custom + cancellation behavior. +- added optional argument to Poco::Util::WinRegistryKey constructor + to specify additional flags (in addition to KEY_READ and KEY_WRITE) + for the samDesired argument of RegOpenKeyEx() or RegCreateKeyEx(). +- improved Poco::BasicEvent::notify() performance by avoiding an unnecessary heap + allocation. +- added additional well-known port numbers to Poco::URI: rtsp, sip, sips, xmpp. +- added Poco::Net::MediaType::matchesRange() +- improved invalid socket handling: a Poco::Net::InvalidSocketException is + now thrown instead of an assertion when an operation is attempted on a closed or + otherwise uninitialized socket. + + +Release 1.4.0 (2010-12-14) +========================== + +- SSLManager: documentation fixes, code cleanup +- SSLManager: renamed PrivateKeyPassPhrase event to PrivateKeyPassphraseRequired +- added HTTPServerRequestImpl::socket() to get access to the underlying socket +- added Socket::secure() to find out whether a given socket supports SSL/TLS +- added SecureStreamSocket::havePeerCertificate() +- NetSSL: added support for turning off extended certificate validation (hostname matching) +- fixed SF# 2941228: ICMPClient::ping() issues on Mac OS X +- fixed SF# 2941231: ICMPEventArgs out of bounds array access +- added PageCompiler sample +- added missing newline at end of xmlparse.c +- Poco::Glob can now be used with an empty pattern which will match nothing (patch from Kim Graesman) +- added support for HTTP proxy authentication (Basic authentication only) +- fixed SF# 2958959: XMLWriter must encode CR, LF and TAB in attribute values as character entities. +- HTMLForm now supports PUT requests as well (see ) +- fixed SF# #2970521: FileOutputStream and file permissions. + (also fixed in File class) +- removed an unused (and wrong) default parameter from EventImpl constructor for WIN32. +- added full support for session caching to NetSSL_OpenSSL +- fixed SF# 2984454: Poco::Util::Timer::scheduleAtFixedRate() works incorrectly +- fixed a bug in Poco::Util::Timer that could lead to high CPU load if + the system clock is moved forward. +- added system.nodeId to SystemConfiguration +- added a note to Poco::Util::ServerApplication documentation regarding + creation of threads +- added Poco::Net::IPAddress::broadcast() and Poco::Net::IPAddress::wildcard() to + create broadcast (255.255.255.255) and wildcard (0.0.0.0) addresses. +- fixed SF# 2916154: Poco::Net::IPAddress::isLoopback() only works for 127.0.0.1. +- added build configuration for iPhone Simulator +- GNU Make based build system provides new variables: POCO_HOST_BINDIR, POCO_HOST_BINPATH, + POCO_HOST_LIBDIR, POCO_HOST_LIBPATH and POCO_TARGET_* equivalents. +- Application::initialize() and Application::uninitialize() will now be called from within run(). + This solves various issues with uninitialize() not being called, or being called inappropriately + from the Application destructor. + Please note that this change will break applications that use the Application class, + but only call init() and not run(). +- added /startup option to specify startup mode for Windows services (automatic or manual) +- fixed SF# 2967354: SecureSocketImpl shutdown/close problem +- fixed SF# 3006340: LinearHashTable grows even if key already exists +- fixed a particularly nasty Windows error handling issue that manifested itself on WinCE: + WSAGetLastError() would be called after a std::string was created. The string creation could result + in a heap operation which called a Windows API to allocate memory. This would reset the + GetLastError() error code. Since WSAGetLastError() is just an alias for GetLastError(), the actual + error code from the socket operation would be lost. +- upgraded SQLite to 3.7.3 +- added --header-prefix option to PageCompiler +- fixed SF# 3003875: SQLite data binding is broken +- fixed SF# 2993988: Issue with multiple calls to open()/close() on File*Stream +- fixed SF# 2990256: HTMLForm and file uploads +- fixed SF# 2969227: DateTimeParser bug +- fixed SF# 2966698: Socket connect with timeout issue +- fixed SF# 2981041: Bind NULL to a query (patch supplied) +- fixed SF# 2961419: UTF8Encoding::convert() doesn't work properly in DEBUG mode +- fixed SF# 2957068: Timeout value not picked up by proxy in HTTPSClientSession +- fixed NetSSL_OpenSSL test runner for Poco::Util::Application class changes +- Poco::AbstractEvent, Poco::AbstractCache and related classes now accept a Mutex class as additional template argument. + Poco::NullMutex can be used if no synchronization is desired. +- Added Poco::AbstractEvent::empty() to check whether an event has registered delegates. +- Poco::URI now correctly handles IPv6 addresses. +- Added Poco::Nullable class template. +- Added Poco::NullMutex, a no-op mutex to be used as template argument for template classes + taking a mutex policy argument. +- Poco::XML::XMLWriter: fixed a namespace handling issue that occured with startPrefixMapping() and endPrefixMapping() +- Poco::Net::Context now allows for loading certificates and private keys from Poco::Crypto::X509Certificate objects + and Poco::Crypto::RSAKey objects. +- Poco::Crypto::RSAKey no longer uses temporary files for stream operations. Memory buffers are used instead. +- fixed SF# 2957865: added Poco::UUID::tryParse() +- All Zip classes now use Poco::File[Input|Output]Stream instead of std::[i|o]fstream. + UTF-8 filenames will now be handled correctly on Windows. +- fixed SF# 2902029: zlib flush support (Z_SYNC_FLUSH) +- added Poco::TextBufferIterator class +- fixed SF# 2977249: Use epoll instead select under Linux + Socket::select() and Socket::poll() will use epoll under Linux if the Net library is compiled + with -DPOCO_HAVE_FD_EPOLL. This is the default for the Linux build configuration (but not for + the various build configurations targeting embedded Linux platforms). +- fixed SF# 2941664: Memory leak in DeflatingStream with zero-length streams (also fixed some other potential, + but unlikely, memory leaks) +- fixed SF# 2946457: added RejectCertificateHandler +- fixed SF# 2946621: Poco::Path bug with POCO_WIN32_UTF8 +- fixed SF# 2929805: Environment::nodeId() does not work if no eth0 device exists +- Environment::nodeId() no longer throws if no hardware ethernet address can be determined. + It returns an all-zero address instead. +- Added additional classification functions to Poco::Unicode class; made classification functions inline. +- added Ascii class for ASCII character classification. + Methods of the Ascii class are now used instead of the + standard library functions (std::isspace(), etc.) due to + possible inconsistent results or assertions when the + standard library functions are used with character codes + outside the ASCII range. +- Poco::Net::MailMessage: fixed a bug in StringPartHandler that resulted in incorrect handling of non-ASCII data if + char is signed. +- Improved Poco::Net::SMTPClientSession compatibility with various mail servers when using AUTH_LOGIN authentication. +- Added CRAM-SHA1 support to Poco::Net::SMTPClientSession +- Poco::Net::SMTPClientSession now also supports login with AUTH PLAIN. +- Added Poco::Net::SecureSMTPClientSession class, supporting STARTTLS for secure SMTP connections. +- fixed an issue with SharedMemory on POSIX systems, where a shared memory region would be deleted + despite the server flag set to true (see http://pocoproject.org/forum/viewtopic.php?f=12&t=3494). +- PageCompiler: added a new page context directive, to allow passing custom context objects to the + request handler. +- fixed StreamSocketImpl::sendBytes() for non-blocking sockets +- added Poco::Net::DialogSocket::receiveRawBytes(), which should be used instead of receiveBytes() due to internal + buffering by DialogSocket. +- DOMParser: FEATURE_WHITESPACE has been renamed to FEATURE_FILTER_WHITESPACE (which now matches the underlying URI) + and is now handled correctly (previously we did the exact reverse thing) +- added Poco::Util::AbstractConfiguration::remove() to remove a configuration property; added removeRaw() implementations + to all implementations (contributions by Daniel Hobi and Alexey Shults). +- fixed NetSSL_OpenSSL compilation error on Windows with OpenSSL 1.0 +- Added optional FIPS mode support to NetSSL_OpenSSL (contributed by Lior Okman). + If OpenSSL has been configured and built with FIPS support, then FIPS support can + be enabled by calling Poco::Crypto::OpenSSLInitializer::enableFIPSMode(true); or + by setting the fips property in the OpenSSL configuration to true (see Poco::Net::SSLManager + for details). +- fixed SF# 3031530: Ping and possible no timeout +- added Poco::Net::SocketReactor::onBusy(), called whenever at least one notification will + be dispatched. +- fixed SF# 3034863: Compiler warning in net/IPAddress.h with poco 1.3.2 +- added support for CRAM-SHA1 authentication to SMTPClientSession +- Poco::format(): arguments can now be addressed by their index, e.g. %[2]d +- Poco::Util::Timer::cancel() now accepts an optional boolean argument. + If true is passed, cancel() waits until the task queue has been purged. + Otherwise, it returns immediately and works asynchronously, as before. +- Poco::Net::HTTPServerResponse::redirect() now accepts an optional additional + argument to specify the HTTP status code for the redirection. +- fixed a warning (BinaryReader.cpp) and error (ThreadLocal.cpp) in Foundation when compiling with Visual Studio 2010 +- fixed a wrong exception in Poco::Net::POP3ClientSession +- Poco::Net::FTPClientSession and Poco::Net::SMTPClientSession now set the error code in exceptions they throw +- fixed a potential race condition with terminating a Windows service based on Poco::Util::ServerApplication +- fixed a bug in global build configuration file: explicitly setting POCO_CONFIG did not work on Solaris platforms, + as it was always overridden by the automatically determined configuration. +- Added support for MinGW cross builds on Linux. +- Changed location of statically linked build products in the gmake-based build system. + Statically linked executables are now in bin/$(OSNAME)/$(OSARCH)/static and no longer + have the _s suffix +- The POCO_VERSION macro now is in its own header file, "Poco/Version.h". It is no longer + available through "Poco/Foundation.h". +- added Poco::Net::HTTPCookie::escape() and Poco::Net::HTTPCookie::unescape(). +- fixed SF# 3021173: Thread (POSIX) returns uninitialised value for OS priority +- fixed SF# 3040870: ThreadPool has no function to get assigned name +- fixed SF# 3044303: Can't use own config file on Solaris & OSARCH_64BITS ignored +- fixed SF# 2943896: AsyncChannel::log blocks +- fixed a bug in Poco::Util::WinRegistryKey::getInt(): + The size variable passed to RegQueryValueExW() should be initialized to the size + of the output buffer. +- Added rudimentary support for compiling with Clang 2.0 (Xcode 4) on Mac OS X. +- New build configurations for Mac OS X: Darwin32 and Darwin64 for explicit + 32-bit and 64-bit builds. Note that the default Darwin build configuration + will build 64-bit on Snow Leopard and 32-bit on Leopard, but will always place + build products in Darwin/i386. The new Darwin32 and Darwin64 configurations + will use the correct directories. +- fixed SF# 3051598: Bug in URL encoding +- Poco::ThreadPool::stopAll() (and thus also the destructor) will now wait for each + pooled thread to terminate before returning. This fixes an issue with creating + and orderly shutting down a thread pool in a plugin. Previously, a pooled thread + in a thread pool created by a dynamically loaded library might still be running + when the plugin's shared library was unloaded, resulting in Bad Things happening. + This can now no longer happen. As a downside, a pooled thread that fails to + finish will block stopAll() and the destructor forever. +- NetSSL_OpenSSL: for a SecureStreamSocket, available() now returns the number of bytes that + are pending in the SSL buffer (SSL_pending()), not the actual socket buffer. +- Added Poco::Net::HTTPClientSession::secure() to check for a secure connection. +- Poco::Net::HTTPRequest::setHost() now does not include the port number in the Host header + if it's either 80 or 443. +- log messages can now optionally include source file path and line number +- Poco::PatternFormatter can format source file path and line number (%U, %u) +- logging macros (poco_information(), etc.) now use __LINE__ and __FILE__ +- new logging macros that incorporate Poco::format(): poco_information_f1(logger, format, arg) with up to 4 arguments +- added Poco::Net::HTTPSession::attachSessionData() and Poco::Net::HTTPSession::sessionData() + to attach arbitrary data to a HTTP session. +- added additional constructors to zlib stream classes that allow passing + a windowBits parameter to the underlying zlib library. +- fixed a potential error handling issue in Poco::Net::SecureSocketImpl. +- fixed SF# 3110272: RSACipherImpl bug. +- fixed SF# 3081677: ConfigurationView's getRaw not retrieving xml attributes. +- added basic support for Canonical XML and better pretty-printing support to Poco::XML::XMLWriter. +- Poco::Util::AbstractConfiguration now supports events fired when changing or + removing properties. +- XML: added support for finding DOM nodes by XPath-like + expressions. Only a very minimal subset of XPath is supported. + See Poco::XML::Element::getNodeByPath(), Poco::XML::Element::getNodeByPathNS() + and the same methods in Poco::XML::Document. +- Poco::Timer: If the callback takes longer to execute than the + timer interval, the callback function will not be called until the next + proper interval. The number of skipped invocations since the last + invocation will be recorded and can be obtained by the callback + by calling skipped(). +- Poco::BinaryReader and Poco::BinaryWriter now support reading and + writing std::vectors of the supported basic types. Also, strings + can now be written in a different encoding (a Poco::TextEncoding + can be optionally passed to the constructor). +- Poco::UUID::nil() and Poco::UUID::isNil() have been renamed to + Poco::UUID::null() and Poco::UUID::isNull(), respectively, to avoid + issues with Objective-C++ projects on Mac OS X and iOS where nil is + a system-provided macro. +- Crypto bugfixes: RSACipherImpl now pads every block of data, not just the + last (or last two). +- Improved Crypto testsuite by adding new tests +- Added new Visual Studio project configurations: debug_static_mt and release_static_mt + (linking with static runtime libraries). The existing configurations debug_static + and release_static have been renamed to debug_static_md and release_static_md, respectively. + The suffixes of the static libraries have also changed. The static_md configurations + now build libraries with suffixes md[d], while the libraries built by the static_mt + configurations have mt[d] suffixes. +- Added Visual Studio project files for 64-bit builds. +- Added Visual Studio 2010 project files. +- Removed the use of local static objects in various methods due to + their construction not being threadsafe (and thus leading to + potential race conditions) on Windows/Visual C++. +- Fixed some warning on 64-bit Windows builds. +- The name of the Data connector libraries have changed. They are now + named PocoDataMySQL, PocoDataODBC and PocoDataSQLite. +- fixed SF# 3125498: Linux NetworkInterface::list() doesn't return IPv6 IPs +- fixed SF# 3125457: IPv6 IPAddress tests are wrong +- Added initialization functions for the NetSSL_OpenSSL and Crypto libraries. + These should be called instead of relying on automatic initialization, + implemented with static initializer objects, as this won't work with + statically linked executables (where the linker won't include the + static initializer object). + The functions are Poco::Crypto::initializeCrypto(), Poco::Crypto::uninitializeCrypto(), + Poco::Net::initializeSSL() and Poco::Net::uninitializeSSL(). + Applications using Crypto and/or NetSSL should call these methods appropriately at + program startup and shutdown. + Note: In release 1.3.6, similar functions have been added to the Net library. + + +Release 1.3.6p2 (2010-01-15) +============================ + +- fixed an issue in the Windows implementation Poco::RWLock, where + tryReadLock() sometimes would return false even if no writers + were using the lock (fix contributed by Bjrn Carlsson) +- added Poco::Environment::libraryVersion(). +- fixed SF# 2919461: Context ignores parameter cypherList +- removed an unused enum from RSACipherImpl.cpp (Crypto) +- integrated a new expat patch for CVE-2009-3560. +- fixed SF# 2926458: SSL Context Problem. The Poco::Net::Context + class now makes sure that OpenSSL is properly initialized. +- updated iPhone build configuration (contributed by Martin York) +- fixed SF# 1815124 (reopened): XML Compile failed on VS7.1 with + XML_UNICODE_WCHAR_T +- fixed SF# 2932647: FTPClientSession::getWorkingDirectory() returns a bad result + + +Release 1.3.6p1 (2009-12-21) +============================ + +- added support for using external zlib, pcre, expat and sqlite3 instead of + bundled ones (-DPOCO_UNBUNDLED, configure --unbundled) +- fixed SF# 2911407: Add sh4 support +- fixed SF# 2912746: RSAKey::EXP_LARGE doesn't work +- fixed SF# 2904119: abstractstrategy uses std::set but do not includes it +- fixed SF# 2909946: localtime NULL pointer +- fixed SF# 2914986: potential expat DoS security issues (CVE-2009-3560 and CVE-2009-3720) +- fixed SF# 2916305: SSL Manager crashes +- fixed SF# 2903676: Tuple TypeHander does not handle composites. + + +Release 1.3.6 (2009-11-24) +========================== + +- added Environment::processorCount() +- added POCO_VERSION macro to Poco/Foundation.h +- fixed SF# 2807527: Poco::Timer bug for long startInterval/periodic interval +- fixed a bug similar to SF# 2807527 in Poco::Util::Timer. +- fixed SF# 2795395: Constructor doesn't treat the params "key" and "iv" +- fixed SF# 2804457: DateTime::checkLimit looks wrong +- fixed SF# 2804546: DateTimeParser requires explicit RFC1123 format +- added ReleaseArrayPolicy to Poco::SharedPtr +- upgraded to SQLite 3.6.20 +- fixed SF# 2782709: Missing semicolons in "Logger.h" convenience +- fixed SF# 2526407: DefaultStrategy.h ++it instead of it++ in a loop +- fixed SF# 2502235: Poco STLPort patch +- fixed SF# 2186643: Data::Statement::reset() not implemented in 1.3.3 +- fixed SF# 2164227: Allow File opened read only by FileInputSteam to be writable +- fixed SF# 2791934: use of char_traits::copy in BufferedStreamBuf::underflow +- fixed SF# 2807750: Support additional SQL types in SQLite +- fixed documentation bugs in Timed/PriorityNotificationQueue +- fixed SF# 2828401: Deadlock in SocketReactor/NotificationCenter (also fixes patch# 1956490) + NotificationCenter now uses a std::vector internally instead of a std::list, and the mutex is + no longer held while notifications are sent to observers. +- fixed SF# 2835206: File_WIN32 not checking aganist INVALID_HANDLE_VALUE +- fixed SF# 2841812: Posix ThreadImpl::sleepImpl throws exceptions on EINTR +- fixed SF# 2839579: simple DoS for SSL TCPServer, HTTPS server + No SSL handshake is performed during accept() - the handshake is delayed until + sendBytes(), receiveBytes() or completeHandshake() is called for the first time. + This also allows for better handshake and certificate validation when using + nonblocking connections. +- fixed SF# 2836049: Possible handle leak in FileStream + If sync() fails, close() now simply set's the stream's bad bit. + In any case, close() closes the file handle/descriptor. +- fixed SF# 2814451: NetSSL: receiveBytes crashes if socket is closed +- added a workaround for Vista service network initialization issue + (an Windows service using the Net library running under Vista will + crash in the call to WSAStartup() done in NetworkInitializer). + Workaround is to call WSAStartup() in the application's main(). + Automatic call to WSAStartup() in the Net library can now be disabled + by compiling Net with -DPOCO_NET_NO_AUTOMATIC_WSASTARTUP. Also + the new Poco::Net::initializeNetwork() and Poco::Net::uninitializeNetwork() + functions can be used to call WSAStartup() and WSACleanup(), respectively, + in a platform-independent way (on platforms other than Windows, these + functions will simply do nothing). +- added VCexpress build script support (contributed by Jolyon Wright) +- fixed SF# 2851052: Poco::DirectoryIterator copy constructor is broken +- fixed SF# 2851197: IPAddress ctor throw keyword missing +- added Poco::ProtocolException +- PageCompiler improvements: new tags, support for buffered output, etc. +- better error reporting in Data MySQL connector (patch #2881270 by Jan "HanzZ" Kaluza) +- fixed SF# 1892462: FTPClient:Choose explicitely between EPSV and PASV +- fixed SF# 2806365: Option for PageCompiler to write output to different dir +- fixed a documentation bug (wrong sample code) in Process::launch() documentation +- added --header-output-dir option to PageCompiler +- fixed SF# 2849144: Zip::Decompress notifications error +- SAXParser has a new feature: "http://www.appinf.com/features/enable-partial-reads". + See ParserEngine::setEnablePartialReads() for a description of what this does. +- fixed SF# 2876179: MySQL Signed/Unsigned value bug +- fixed SF# 2877970: possible bug in timer task +- fixed SF# 2874104: wrong parsing empty http headers +- fixed SF# 2860694: Incorrect return code from SecureStreamSocketImpl::sendBytes +- fixed SF# 2849750: Possible bug with XMLWriter? +- added MailMessage::encodeWord() to support RFC 2047 word encoded + mail header fields when sending out mail containing non-ASCII + characters. +- fixed SF# 2890975: SMTPClientSession bug with 7BIT encoding +- fixed an issue with retrieving the value of socket options on Windows 7. + Before obtaining the value of a socket, we now initialize the variable receiving the + socket option value to zero. +- fixed SF# 2836141: Documentation errors +- fixed SF# 2864232: Socket::select() does not detect closed sockets on windows +- fixed SF# 2812143: Socket::select() should check socket descriptors... +- fixed SF# 2801750: NetworkInterface forName returns wrong subnetMask +- fixed SF# 2816315: Problem with POSIX Thread::sleepImpl +- fixed SF# 2795646: IPv6 address parsing bug +- fixed #0000092: ServerApplication::waitForTerminationRequest(), SIGINT and GDB. + Poco::Util::ServerApplication::waitForTerminationRequest() no longer registers a + signal handler for SIGINT if the environment variable POCO_ENABLE_DEBUGGER + is defined. +- fixed SF# 2896070: Poco::Net::Context with non-ASCII paths +- added Unicode Surrogate support to Poco::UTF16Encoding. + See Poco::TextEncoding::queryConvert() and Poco::TextEncoding::sequenceLength() + for how this is implemented. Contributed by Philippe Cuvillier. +- fixed SF# 2897650: [branch 1.3.6] Net.SocketAddress won't compile for CYGWIN +- fixed SF# 2896161: Building on Windows fails when basedir has space in it +- fixed SF# 2864380: Memory leak when using secure sockets +- NetSSL_OpenSSL: the SSL/TLS session cache is now disabled by default and + can be enabled per Context using Poco::Net::Context::enableSessionCache(). +- fixed SF# 2899039: Wrong DST handling in LocalDateTime +- added RWLock::ScopedReadLock and RWLock::ScopedWriteLock (contributed by Marc Chevrier) +- added Thread::TID type, as well as Thread::tid() and Thread::currentTid() to obtain the native + thread handle/ID +- added Zip file comment support +- On Windows, Poco::SharedLibrary::load() now uses LoadLibraryEx instead of LoadLibrary + and uses the LOAD_WITH_ALTERED_SEARCH_PATH if an absolute path is specified. This will + add the directory containing the library to the search path for DLLs that the + loaded library depends upon. +- Mac OS X build settings now match those used by default Xcode projects, making linking the + POCO libs to Xcode projects easier +- Replaced use of std::valarray in Poco::Net::ICMPEventArgs with std::vector due to issues with + std::valarray together with STDCXX debug mode on OS X + + +Release 1.3.5 (2009-05-11) +========================== + +- fixed SF# 2779410: Poco::Data::ODBC::HandleException impovement +- fixed wrong exception text for Poco::UnhandledException +- Fixed a problem with SSL shutdown that causes clients (web browsers) + to hang when the server attempts to perform a clean SSL shutdown. We now call + SSL_shutdown() once, even if the shutdown is not complete after the first call. +- added Poco::Crypto::X509Certificate::save() +- fixed a bug in Poco::Zip::Decompress that results in wrong paths for extracted files +- fixed a bug in Poco::Zip::ZipManipulator where the Zip file was opened in text format + on Windows. +- added Poco::Crypto::X509Certificate::issuedBy() to verify certificate chain. +- fixed 0000089: Thread::sleep() on Linux is extremely inaccurate +- added methods to extract the contents of specific fields from the + subject and issuer distinguished names of a certificate. + + +Release 1.3.4 (2009-04-21) +========================== + +- fixed SF# 2611804: PropertyFileConfiguration continuation lines +- fixed SF# 2529788: ServerApplication::beDaemon() broken +- fixed SF# 2445467: Bug in Thread_WIN32.cpp +- Improved performance of HTTP Server by removing some + string copy operations +- fixed SF# 2310735: HTTPServer: Keep-Alive only works with send() +- fixed appinf.com IP address in Net testsuite +- fixed RFC-00188: NumberFormatter and float/double numbers +- added --pidfile option to ServerApplication on Unix +- fixed SF# 2499504: Bug in Win32_Thread when using from dll (fixed also for POSIX threads) +- fixed SF# 2465794: HTTPServerRequestImpl memory leak +- fixed SF# 2583934: Zip: No Unix permissions set +- the NetSSL_OpenSSL library has been heavily refactored +- added NumberFormatter::append*() and DateTimeFormatter::append() functions +- use NumberFormatter::append() and DateTimeFormatter::append() instead of format() where + it makes sense to gain some performance +- added system.dateTime and system.pid to Poco::Util::SystemConfiguration +- added %F format specifier (fractional seconds/microseconds) to DateTimeFormatter, + DateTimeParser and PatternFormatter. +- fixed SF# 2630476: Thread_POSIX::setStackSize() failure with g++ 4.3 +- fixed SF# 2679279: Handling of -- option broken +- added compile options to reduce memory footprint of statically linked applications + by excluding various classes from automatically being linked. + See the POCO_NO_* macros in Poco/Config.h. +- fixed SF# 2644940: on Windows the COMPUTER-NAME and the HOSTNAME can be different +- added DNS::hostName() function +- added build configuration for iPhone (using Apple's SDK) +- basic support for AIX 5.x/xlC 8 +- fixed a bug resulting in a badly formatted exception message with IOException + thrown due to a socket-related error +- fixed SF# 2644718: NetworkInterface name conflict in MinGW +- added a missing #include to CryptoTransform.h +- fixed SF# 2635377: HTTPServer::HTTPServer should take AutoPtr +- replaced plain pointers with smart pointers in some interfaces +- upgraded to sqlite 3.6.13 +- improved Data::SQLite error reporting +- Poco::Glob now works with UTF-8 encoded strings and supports case-insensitive comparison. + This also fixes SF# 1944831: Glob::glob on windows should be case insensitve +- added Twitter client sample to Net library +- Fixed SF# 2513643: Seg fault in Poco::UTF8::toLower on 64-bit Linux +- Poco::Data::SessionPool: the janitor can be disabled by specifying a zero idle time. +- added Poco::Data::SessionPool::customizeSession() +- added support for different SQLite transaction modes (DEFERRED, IMMEDIATE, EXCLUSIVE) +- fixed a few wrong #if POCO_HAVE_IPv6 in the Net library +- added support for creating an initialized, but unconnected StreamSocket. +- added File::isDevice() +- added family() member function to SocketAddress, +- Data::SQLite: added support for automatic retries if the database is locked +- XMLConfiguration is now writable +- fixed an IPv6 implementation for Windows bug in HostEntry +- Timer class improvement: interval between callback is no longer influenced by the + time needed to execute the callback. +- added PriorityNotificationQueue and TimedNotificationQueue classes to Foundation. + These are variants of the NotificationQueue class that support priority and + timestamp-tagged notifications. +- added Poco::Util::Timer class. This implements a timer that can schedule different + tasks at different times, using only one thread. +- the signatures of Poco::NotificationQueue and Poco::NotificationCenter member functions + have been changed to accept a Poco::Notification::Ptr instead of Poco::Notification* + to improve exception safety. This change should be transparent and fully backwards + compatible. The signature of the methods returning a Poco::Notification* have not been + changed for backwards compatibility. It is recommended, that any Notification* obtained + should be immediately assigned to a Notification::Ptr. +- SQLite::SessionImpl::isTransaction() now uses sqlite3_get_autocommit() to find out + about the transaction state. +- refactored Crypto library to make it independent from NetSSL_OpenSSL. +- added support for RSA-MD5 digital signatures to Crypto library. +- removed SSLInitializer from NetSSL library (now moved to Crypto library) +- added build configs for static libraries to Crypto library +- OpenSSL now depends on Crypto library (which makes more sense than + vice versa, as it was before). Poco::Net::X509Certificate is now + a subclass of Poco::Crypto::X509Certificate (adding the verify() + member function) and the Poco::Net::SSLInitializer class was + moved to Poco::Crypto::OpenSSLInitializer. +- added build configs for static libraries to Zip +- added batch mode to CppUnit::WinTestRunner. + WinTestRunnerApp supports a batch mode, which runs the + test using the standard text-based TestRunner from CppUnit. + To enable batch mode, start the application with the "/b" + or "/B" command line argument. Optionally, a path to a file + where the test output will be written to may be given: + "/b:" or "/B:". + When run in batch mode, the exit code of the application + will denote test success (0) or failure (1). +- testsuites now also work for static builds on Windows +- The IPv6 support for Windows now basically works (Net library compiled with POCO_HAVE_IPv6) +- fixed a potential error when shutting down openssl in a statically linked application +- added static build configs to Data library +- added Poco::AtomicCounter class, which uses OS-specific APIs for atomic (thread-safe) + manipulation of counter values. +- Poco::RefCountedObject and Poco::SharedPtr now use Poco::AtomicCounter for + reference counting +- fixed SF# 2765569: LoadConfiguration failing from current directory + + +Release 1.3.3p1 (2008-10-09) +============================ + +- Fixed SF# 2153031: 1.3.3 Crypto won't compile on 64-bit Linux +- Fixed a warning in MySQL connector +- Updated README +- The global Makefile in the Zip archive is no longer broken + + +Release 1.3.3 (2008-10-07) +========================== + +- Threads now have optional user-settable stack size (if the OS supports that feature) +- Events now support simplified delegate syntax based on delegate function template. + See Poco::AbstractEvent documentation for new syntax. +- Cache supports new access expire strategy. +- Upgraded to SQLite 3.6.2 +- Upgraded to PCRE 7.8 +- added HttpOnly support to Poco::Net::HTTPCookie +- NetworkInterface now has displayName() member (useful only on Windows) +- Poco::Util::WinRegistryKey now has a read-only mode +- Poco::Util::WinRegistryKey::deleteKey() can now recursively delete registry keys +- Poco::File::created() now returns 0 if the creation date/time is not known, as + it's the case on most Unix platforms (including Linux). + On FreeBSD and Mac OS X, it returns the real creation time. +- Time interval based log file rotation (Poco::FileChannel) now works + correctly. Since there's no reliable and portable way to find out the creation + date of a file (Windows has the tunneling "feature", most Unixes don't provide + the creation date), the creation/rotation date of the log file is written into + the log file as the first line. +- added Environment::nodeId() for obtaining the Ethernet address of the system + (this is now also used by UUIDGenerator - the corresponding code from UUIDGenerator + was moved into Environment) +- added a release policy argument to SharedPtr template +- Socket::select() will no longer throw an InvalidArgumentException + on Windows when called with no sockets at all. If all three socket + sets are empty, Socket::select() will return 0 immediately. +- SocketReactor::run() now catches exceptions and reports them via + the ErrorHandler. +- SocketReactor has a new IdleNotification, which will be posted when + the SocketReactor has no sockets to handle. +- added referenceCount() method to Poco::SharedPtr. +- POCO now builds with GCC 4.3 (but there are some stupid warnings: + "suggest parentheses around && within ||". +- Solution and project files for Visual Studio 2008 are included +- The Zip library is now officially part of the standard POCO release. +- The Crypto library (based on OpenSSL) has been added. The original code + was kindly contributed by Ferdinand Beyer. +- A Data Connector to MySQL, contributed by Sergey Kholodilov, is now part + of the POCO release. +- fixed SF# 1859738: AsyncChannel stall +- fixed SF# 1815124: XML Compile failed on VS7.1 with XML_UNICODE_WCHAR_T +- fixed SF# 1867340: Net and NetSSL additional dependency not set - ws2_32.lib +- fixed SF# 1871946: no exception thrown on error +- fixed SF# 1881113: LinearHashTable does not conform to stl iterators +- fixed SF# 1899808: HTMLForm.load() should call clear() first +- fixed SF# 2030074: Cookie problem with .NET server +- fixed SF# 2009707: small bug in Net/ICMPPacketImpl.cpp +- fixed SF# 1988579: Intel Warning: invalid multibyte character sequence +- fixed SF# 2007486: Please clarify license for Data/samples/* +- fixed SF# 1985180: Poco::Net::DNS multithreading issue +- fixed SF# 1968106: DigestOutputStream losing data +- fixed SF# 1980478: FileChannel loses messages with "archive"="timestamp" +- fixed SF# 1906481: mingw build WC_NO_BEST_FIT_CHARS is not defined +- fixed SF# 1916763: Bug in Activity? +- fixed SF# 1956300: HTTPServerConnection hanging +- fixed SF# 1963214: Typo in documentation for NumberParser::parseFloat +- fixed SF# 1981865: Cygwin Makefile lacks ThreadTarget.cpp +- fixed SF# 1981130: pointless comparison of unsigned integer with zero +- fixed SF# 1943728: POCO_APP_MAIN namespace issue +- fixed SF# 1981139: initial value of reference to non-const must be an lvalue +- fixed SF# 1995073: setupRegistry is broken if POCO_WIN32_UTF8 enabled +- fixed SF# 1981125: std::swap_ranges overloading resolution failed +- fixed SF# 2019857: Memory leak in Data::ODBC Extractor +- fixed SF# 1916761: Bug in Stopwatch? +- fixed SF# 1951443: NetworkInterface::list BSD/QNX no netmask and broadcast addr +- fixed SF# 1935310: Unhandled characters in Windows1252Encoding +- fixed SF# 1948361: a little bug for win32 +- fixed SF# 1896482: tryReadLock intermittent error +- workaround for SF# 1959059: Poco::SignalHandler deadlock + the SignalHandler can now be disabled globally by adding a + #define POCO_NO_SIGNAL_HANDLER to Poco/Config.h +- fixed SF# 2012050: Configuration key created on read access +- fixed SF# 1895483: PCRE - possible buffer overflow +- fixed SF# 2062835: Logfile _creationDate is wrong +- fixed SF# 2118943: out_of_bound access in Poco::Data::BLOB:rawContent +- fixed SF# 2121732: Prevent InvalidArgumentException in SocketReactor +- fixed SF# 1891132: Poco::Data::StatementImpl::executeWithLimit is not correct +- fixed SF# 1951604: POCO refuses to compile with g++ 4.3.0 +- fixed SF# 1954327: CYGWIN's pthread does not define PTHREAD_STACK_MIN +- fixed SF# 2124636: Discrepancy between FileWIN32(U)::handleLastError +- fixed SF# 1558300: MinGW/MSYS Builds +- fixed SF# 2123266: Memory leak under QNX6 with dinkum library +- fixed SF# 2140411: ScopedUnlock documentation bug +- fixed SF# 2036460: UUID regression tests are failing on Linux with g++ 4.3.1 +- fixed SF# 2150438: Tuple TypeHandler position increment size is wrong + + +Release 1.3.2 (2008-02-04) +========================== + +Foundation, XML, Net, Util: +- added POCO_NO_SHAREDMEMORY to Config.h +- POCO_NO_WSTRING now really disables all wide string related calls +- added template specialization for string hashfunction (performance) +- XML parser performance improvements (SAX parser is now up to 40 % faster +- added parseMemoryNP() to XMLReader and friends +- URIStreamOpener improvement: redirect logic is now in URIStreamOpener. + this enables support for redirects from http to https. +- added support for temporary redirects and useproxy return code +- added getBlocking() to Socket +- added File::isHidden() +- better WIN64 support (AMD64 and IA64 platforms are recognized) +- added support for timed lock operations to [Fast]Mutex +- SharedLibrary: dlopen() is called with RTLD_GLOBAL instead of RTLD_LOCAL + (see http://gcc.gnu.org/faq.html#dso) +- Poco::Timer threads can now run with a specified priority +- added testcase for SF# 1774351 +- fixed SF# 1784772: Message::swap omits _tid mem +- fixed SF# 1790894: IPAddress(addr,family) doesn't fail on invalid address +- fixed SF# 1804395: Constructor argument name wrong +- fixed SF# 1806807: XMLWriter::characters should ignore empty strings +- fixed SF# 1806994: property application.runAsService set too late +- fixed SF# 1828908: HTMLForm does not encode '+' +- fixed SF# 1831871: Windows configuration file line endings not correct. +- fixed SF# 1845545: TCP server hangs on shutdown +- fixed SF# 1846734: Option::validator() does not behave according to doc +- fixed SF# 1856567: Assertion in DateTimeParser::tryParse() +- fixed SF# 1864832: HTTP server sendFile() uses incorrect date +- HTTPServerResponseImpl now always sets the Date header automatically + in the constructor. +- fixed SF# 1787667: DateTimeFormatter and time related classes + (also SF# 1800031: The wrong behavior of time related classes) +- fixed SF# 1829700: TaskManager::_taskList contains tasks that never started +- fixed SF# 1834127: Anonymous enums in Tuple.h result in invalid C++ +- fixed SF# 1834130: RunnableAdapter::operator= not returning a value +- fixed SF# 1873924: Add exception code to NetException +- fixed SF# 1873929: SMTPClientSession support for name in sender field +- logging performance improvements (PatternFormatter) +- fixed SF# 1883871: TypeList operator < fails for tuples with duplicate values +- CYGWIN build works again (most things work but Foundation testsuite still fails) +- new build configuration for Digi Embedded Linux (ARM9, uclibc) +- new build configuration for PowerPC Linux + +Data: +- fixed SF# 1724388: ODBC Diagnostics +- fixed SF# 1804797: ODBC Statement multiple execution fails +- fixed SF# 1803435: SessionPool onJanitorTimer called too often? +- fixed SF# 1851997: Undefined Behavior in ODBC::Preparation +- updated SQlite to 3.5.5 + + +Release 1.3.1 (2007-08-08) +========================== + +Foundation, XML, Net, Util: +- DynamicAny fixes for char conversions +- fixed SF# 1733362: Strange timeout handling in SocketImpl::poll and Socket::select +- fixed SF patch# 1728912: crash in POCO on Solaris +- fixed SF# 1732138: Bug in WinRegistryConfiguration::getString +- fixed SF# 1730790: Reference counting breaks NetworkInterface::list() +- fixed SF# 1720733: Poco::SignalHandler bug +- fixed SF# 1718724: Poco::StreamCopier::copyStream loops forever +- fixed SF# 1718437: HashMap bug +- changed LinearHashTable iterator implementation. less templates -> good thing. +- fixed SF# 1733964: DynamicAny compile error +- UUIDGenerator: fixed infinite loop with non ethernet interfaces +- updated expat to 2.0.1 +- fixed SF# 1730566: HTTP server throws exception +- Glob supports symbolic links (additional flag to control behavior) +- fixed a problem with non blocking connect in NetSSL_OpenSSL + (see http://www.appinf.com/poco/wiki/tiki-view_forum_thread.php?comments_parentId=441&topics_threshold=0&topics_offset=29&topics_sort_mode=commentDate_desc&topics_find=&forumId=6) +- fixed a problem with SSL renegotiation in NetSSL_OpenSSL (thanks to Sanjay Chouksey for the fix) +- fixed SF# 1714753: NetSSL_OpenSSL: HTTPS connections fail with wildcard certs +- HTTPClientSession: set Host header only if it's not already set (proposed by EHL) +- NetworkInterface (Windows): Loopback interface now has correct netmask; + interfaces that do not have an IP address assigned are no longer reported. +- Fixes for VC++ W4 warnings from EHL +- SharedMemory: first constructor has an additional "server" parameter + Setting to true does not unlink the shared memory region when the SharedMemory object is destroyed. (Alessandro Oliveira Ungaro) +- fixed SF# 1768231: MemoryPool constructor + +Data: +- fixed SF# 1739989: Data::RecordSet::operator = () (in 1.3 branch) +- fixed SF# 1747525: SQLite, Transactions and Session Pooling (in 1.3 branch) +- upgraded to SQLite 3.4.1 + + Release 1.3.0 (2007-05-07) ========================== diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 15fd99de2..06a166539 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1,19 +1,25 @@ Guenter Obiltschnig Alex Fabijanic Peter Schojer -Claus Dabringer -Andrew Marlow -Caleb Epstein -Andrew J. P. Maclean -Paschal Mushubi -Sergey N. Yatskevich +Ferdinand Beyer Krzysztof Burghardt -David Shawley -Larry Lewis -Ryan Kraay +Claus Dabringer +Caleb Epstein Eran Hammer-Lahav -Tom Tan Chris Johnson +Sergey Kholodilov +Ryan Kraay +Larry Lewis +Andrew J. P. Maclean +Andrew Marlow +Paschal Mushubi +Jiang Shan +David Shawley +Sergey Skorokhodov +Tom Tan <> +Sergey N. Yatskevich +Marc Chevrier +Philippe Cuvillier -- -$Id: //poco/Main/dist/CONTRIBUTORS#7 $ +$Id: //poco/1.4/dist/CONTRIBUTORS#1 $ diff --git a/Makefile b/Makefile index 3c2efb97c..5f1f73492 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,7 @@ endif all: libexecs tests samples INSTALLDIR = $(DESTDIR)$(POCO_PREFIX) -COMPONENTS = Foundation XML Util Net NetSSL_OpenSSL Data Data/SQLite Data/ODBC +COMPONENTS = Foundation XML Util Net Crypto NetSSL_OpenSSL Data Data/SQLite Data/ODBC Data/MySQL Zip PageCompiler PageCompiler/File2Page cppunit: $(MAKE) -C $(POCO_BASE)/CppUnit @@ -44,9 +44,9 @@ install: libexecs find $(POCO_BUILD)/lib -name "libPoco*" -type f -exec cp -f {} $(INSTALLDIR)/lib \; find $(POCO_BUILD)/lib -name "libPoco*" -type l -exec cp -Rf {} $(INSTALLDIR)/lib \; -libexecs = Foundation-libexec XML-libexec Util-libexec Net-libexec NetSSL_OpenSSL-libexec Data-libexec Data/SQLite-libexec Data/ODBC-libexec -tests = Foundation-tests XML-tests Util-tests Net-tests NetSSL_OpenSSL-tests Data-tests Data/SQLite-tests Data/ODBC-tests -samples = Foundation-samples XML-samples Util-samples Net-samples NetSSL_OpenSSL-samples Data-samples +libexecs = Foundation-libexec XML-libexec Util-libexec Net-libexec Crypto-libexec NetSSL_OpenSSL-libexec Data-libexec Data/SQLite-libexec Data/ODBC-libexec Data/MySQL-libexec Zip-libexec PageCompiler-libexec PageCompiler/File2Page-libexec +tests = Foundation-tests XML-tests Util-tests Net-tests Crypto-tests NetSSL_OpenSSL-tests Data-tests Data/SQLite-tests Data/ODBC-tests Data/MySQL-tests Zip-tests +samples = Foundation-samples XML-samples Util-samples Net-samples Crypto-samples NetSSL_OpenSSL-samples Data-samples Zip-samples PageCompiler-samples .PHONY: $(libexecs) .PHONY: $(tests) @@ -92,7 +92,16 @@ Net-tests: Net-libexec cppunit Net-samples: Net-libexec Foundation-libexec XML-libexec Util-libexec $(MAKE) -C $(POCO_BASE)/Net/samples -NetSSL_OpenSSL-libexec: Foundation-libexec Net-libexec Util-libexec +Crypto-libexec: Foundation-libexec + $(MAKE) -C $(POCO_BASE)/Crypto + +Crypto-tests: Crypto-libexec cppunit + $(MAKE) -C $(POCO_BASE)/Crypto/testsuite + +Crypto-samples: Crypto-libexec Foundation-libexec Util-libexec + $(MAKE) -C $(POCO_BASE)/Crypto/samples + +NetSSL_OpenSSL-libexec: Foundation-libexec Net-libexec Util-libexec Crypto-libexec $(MAKE) -C $(POCO_BASE)/NetSSL_OpenSSL NetSSL_OpenSSL-tests: NetSSL_OpenSSL-libexec cppunit @@ -122,6 +131,30 @@ Data/ODBC-libexec: Foundation-libexec Data-libexec Data/ODBC-tests: Data/ODBC-libexec cppunit $(MAKE) -C $(POCO_BASE)/Data/ODBC/testsuite +Data/MySQL-libexec: Foundation-libexec Data-libexec + $(MAKE) -C $(POCO_BASE)/Data/MySQL + +Data/MySQL-tests: Data/MySQL-libexec cppunit + $(MAKE) -C $(POCO_BASE)/Data/MySQL/testsuite + +Zip-libexec: Foundation-libexec Net-libexec Util-libexec XML-libexec + $(MAKE) -C $(POCO_BASE)/Zip + +Zip-tests: Zip-libexec cppunit + $(MAKE) -C $(POCO_BASE)/Zip/testsuite + +Zip-samples: Zip-libexec + $(MAKE) -C $(POCO_BASE)/Zip/samples + +PageCompiler-libexec: Net-libexec Util-libexec XML-libexec Foundation-libexec + $(MAKE) -C $(POCO_BASE)/PageCompiler + +PageCompiler-samples: PageCompiler-libexec + $(MAKE) -C $(POCO_BASE)/PageCompiler/samples + +PageCompiler/File2Page-libexec: Net-libexec Util-libexec XML-libexec Foundation-libexec + $(MAKE) -C $(POCO_BASE)/PageCompiler/File2Page + clean: $(MAKE) -C $(POCO_BASE)/Foundation clean $(MAKE) -C $(POCO_BASE)/Foundation/testsuite clean @@ -135,6 +168,9 @@ clean: $(MAKE) -C $(POCO_BASE)/Net clean $(MAKE) -C $(POCO_BASE)/Net/testsuite clean $(MAKE) -C $(POCO_BASE)/Net/samples clean + $(MAKE) -C $(POCO_BASE)/Crypto clean + $(MAKE) -C $(POCO_BASE)/Crypto/testsuite clean + $(MAKE) -C $(POCO_BASE)/Crypto/samples clean $(MAKE) -C $(POCO_BASE)/NetSSL_OpenSSL clean $(MAKE) -C $(POCO_BASE)/NetSSL_OpenSSL/testsuite clean $(MAKE) -C $(POCO_BASE)/NetSSL_OpenSSL/samples clean @@ -145,6 +181,15 @@ clean: $(MAKE) -C $(POCO_BASE)/Data/SQLite/testsuite clean $(MAKE) -C $(POCO_BASE)/Data/ODBC clean $(MAKE) -C $(POCO_BASE)/Data/ODBC/testsuite clean + $(MAKE) -C $(POCO_BASE)/Data/MySQL clean + $(MAKE) -C $(POCO_BASE)/Data/MySQL/testsuite clean + $(MAKE) -C $(POCO_BASE)/Zip clean + $(MAKE) -C $(POCO_BASE)/Zip/testsuite clean + $(MAKE) -C $(POCO_BASE)/Zip/samples clean + $(MAKE) -C $(POCO_BASE)/PageCompiler clean + $(MAKE) -C $(POCO_BASE)/PageCompiler/samples clean + $(MAKE) -C $(POCO_BASE)/PageCompiler/File2Page clean + $(MAKE) -C $(POCO_BASE)/CppUnit clean distclean: rm -rf $(POCO_BUILD)/lib diff --git a/README b/README index a79e93f0e..2be8d7bdd 100644 --- a/README +++ b/README @@ -1,9 +1,8 @@ -This is the README file for POCO - The C++ Portable Components. +This is the README file for the POCO C++ Libraries. In this document you will find a brief description of the directory layout, -as well as a description necessary steps to build the C++ Portable Components. +as well as a description necessary steps to build the POCO C++ Libraries. -The C++ Portable Components currently consist of four libraries. The Foundation library contains a platform abstraction layer (including classes for multithreading, file system access, logging, etc.), as well as a large number of useful utility classes, such various stream buffer and stream @@ -12,22 +11,25 @@ The XML library contains an XML parser with SAX2 and DOM interfaces, as well as an XMLWriter. The Util library contains classes for working with configuration files and command line arguments, as well as various utility classes. -The Net library contains network classes (sockets, HTTP, etc.) +The Net library contains network classes (sockets, HTTP client/server, etc.). All libraries come with a test suite and a number of sample programs. -The directory layout is as follows: +The basic directory layout is as follows: build/ the build system for Unix/OpenVMS and additional utility scripts config/ build configurations for various Unix platforms rules/ common build rules for all platforms scripts/ build and utility scripts vms/ OpenVMS build system scripts + vxconfig/ VxWorks build configurations bin/ all executables (dynamic link libraries on Windows) +bin64/ all 64-bit executables (and DLLs) doc/ additional documentation lib/ all libraries (import libraries on Windows) +lib64/ all 64-bit libraries CppUnit/ project and make/build files for the CppUnit unit testing framework doc/ additional documentation @@ -38,7 +40,7 @@ CppUnit/ project and make/build files for the CppUnit unit tes Foundation/ project and make/build files for the Foundation library include/ - Foundation/ header files for the Foundation library + Poco/ header files for the Foundation library src/ source files for the Foundation library testsuite/ project and make/build files for the Foundation testsuite src/ source files for the Foundation testsuite @@ -47,62 +49,127 @@ Foundation/ project and make/build files for the Foundation libra XML/ project and make/build files for the XML library include/ - Foundation/ header files for the XML library + Poco/ + XML/ header files for the core XML library + SAX/ header files for SAX support + DOM/ header files for DOM support src/ source files for the XML library testsuite/ project and make/build files for the XML testsuite src/ source files for the XML testsuite bin/ test suite executables samples/ sample applications for the XML library +Net/ project and make/build files for the Net library + include/ + Poco/ + Net/ header files for the Net library + src/ source files for the Net library + testsuite/ project and make/build files for the Net testsuite + src/ source files for the Net testsuite + bin/ test suite executables + samples/ sample applications for the Net library + + +Depending on what package you have downloaded, there may be other libraries +as well (such as Data, Crypto, NetSSL_OpenSSL and Zip). + DOCUMENTATION ============= -Online browsable reference documentation in HTML is available at -. Additional documentation, -including and overview and an introduction to the samples -is available at . +Plenty of documentation (tutorial slides, articles and SDK reference) +is available at . + + +EXTERNAL DEPENDENCIES +===================== + +The following libraries require third-party software (header files and +libraries) being installed to build properly: + +- NetSSL_OpenSSL and Crypt require OpenSSL. +- Data/ODBC requires ODBC + (Microsoft ODBC on Windows, unixODBC or iODBC on Unix/Linux) +- Data/MySQL requires the MySQL client. + +Most Unix/Linux systems already have OpenSSL preinstalled. If your system +does not have OpenSSL, please get it from http://www.openssl.org or +another source. You do not have to build OpenSSL yourself - a binary +distribution is fine (e.g., apt-get install openssl libssl-dev). + +The easiest way to install OpenSSL on Windows is to use a binary +(prebuild) release, for example the one from Shining Light +Productions that comes with a Windows installer +(http://www.slproweb.com/products/Win32OpenSSL.html). +Depending on where you have installed the OpenSSL libraries, +you might have to edit the build script (buildwin.cmd), or add the +necessary paths to the INCLUDE and LIB environment variables. + +The Data library requires ODBC support on your system if you want +to build the ODBC connector (which is the default). On Windows +platforms, ODBC should be readily available if you have the +Windows SDK. On Unix/Linux platforms, you can use iODBC +(preinstalled on Mac OS X) or unixODBC. For the MySQL connector, +the MySQL client libraries and header files are required. + +The Data/ODBC and Data/MySQL Makefiles will search for the ODBC +and MySQL headers and libraries in various places. Nevertheless, +the Makefiles may not be able to find the headers and libraries. +In this case, please edit the Makefile in Data/ODBC and/or Data/MySQL +accordingly. BUILDING ON WINDOWS =================== -Microsoft Visual Studio 7.1 (2003) or 8.0 (2005) is required to build the C++ Portable Components -on Windows platforms. Solution and project files for both versions are included. +Microsoft Visual Studio 7.1 (2003), 8.0 (2005), 9.0 (2008) or 10.0 (2010) is required to +build the POCO C++ Libraries on Windows platforms. Solution and project files for all +versions are included. For Visual Studio 2008 and 2010, 64-bit (x64) builds are +supported as well. You can either build from within Visual Studio (Build->Batch Build->Select All;Rebuild) or from the command line. To build from the command line, start the -Visual Studio .NET 2003 (or 2005) Command Prompt and cd to the directory where you have -extracted the C++ Portable Components sources. Then simply start the build_vs71.cmd (or -build_vs80.cmd, respectively) batch file. This will build all libraries, test suites and -sample programs, in both debug and release versions. The dynamic link libraries will be -placed in the top-most bin directory. The import libraries will be placed in the top-most lib -directory. The test suite executables will be placed in the testsuite/bin directories. -The sample executables will be placed in the sample/*/bin directories. +Visual Studio .NET 2003 (or 2005/2008/2010) Command Prompt and cd to the directory where you +have extracted the POCO C++ Libraries sources. Then, simply start the buildwin.cmd script +and pass as argument the version of visual studio (71, 80, 90 or 100). You can customize +what is being built by buildwin.cmd by passing appropriate command line arguments to +it. Call buildwin.cmd without arguments to see what is available. + +To disable certain components (e.g., NetSSL_OpenSSL or Data/MySQL) from the build, +edit the file named "components" and remove the respective lines. + +Certain libraries, like NetSSL_OpenSSL, Crypto or Data/MySQL have dependencies +to other libraries. Since the build script does not know where to find the necessary +header files and import libraries, you have to either add the header file paths to +the INCLUDE environment variable and the library path to the LIB environment variable, +or you'll have to edit the buildwin.cmd script, where these environment variables can +be set as well. In order to run the test suite and the samples, the top-most bin directory containing the shared libraries must be in the PATH environment variable. -If you want to run the test suite or samples from within Visual Studio, we recommend that -you download and install the free Solution Build Environment for Visual Studio .NET 2003, -from . +IMPORTANT NOTE: Please make sure that the path to the directory containing the +POCO C++ Libraries source tree does not contain spaces. Otherwise, the Microsoft +message compiler may fail when building the Foundation library. -You can then add the bin directory to the PATH environment variable in a .slnenv file, -using the following entry. -POCO_BASE=p:\poco -PATH=$(PATH);$(POCO_BASE)\bin +BUILDING FOR WINDOWS CE -Of course you will have to change the path p:\poco so that it matches your environment. +Building for Windows CE is supported with Microsoft Visual Studio 2008. +Unless you have the Digi JumpStart Windows CE 6.0 SDK installed, you'll +have to modify the included Visual Studio project and solution files. +Please see the SDK Reference Documentation (http://pocoproject.org/documentation) +for instructions. BUILDING ON UNIX/LINUX/MAC OS X =============================== -For building on Unix platforms, the C++ Portable Components come with their own -build system. The build system is based on GNU Make 3.80, with the help from a few -shell scripts. If you do not have GNU Make 3.80 (or later) installed on your machine, -you will need to download it from , -build and install it prior to building the C++ Portable Components. +For building on Unix platforms, the POCO C++ Libraries come with their own +build system. The build system is based on GNU Make 3.80 (or newer), with the help +from a few shell scripts. If you do not have GNU Make 3.80 (or later) installed on +your machine, you will need to download it from +http://directory.fsf.org/devel/build/make.html>, +build and install it prior to building the POCO C++ Libraries. You can check the version of GNU Make installed on your system with @@ -122,6 +189,9 @@ To extract the sources and build all libraries, testsuites and samples, simply > gmake -s See the configure script source for a list of possible options. +For starters, we recommend --no-tests and --no-samples, to reduce build times. +On a multicore or multiprocessor machine, use parallel makes to speed up +the build (make -j4). Once you have successfully built POCO, you can install it to /usr/local (or another directory specified as parameter @@ -129,12 +199,28 @@ to configure --prefix=): > sudo gmake -s install +You can omit certain components from the build. For example, you might +want to omit Data/ODBC or Data/MySQL if you do not have the corresponding +third-party libraries (iodbc or unixodbc, mysqlclient) installed +on your system. To do this, use the --omit argument to configure: + +> ./configure --omit=Data/ODBC,Data/MySQL + + To build on Mac OS X 10.3 with GCC 3, do the following: +(NOTE: This only affects 10.3; for 10.4/10.5 see above) > ./configure --config=Darwin7 > make -s +IMPORTANT: Make sure that the path to the build directory does not +contain symbolic links. Furthermore, on Mac OS X (or other systems +with case insensitive filesystems), make sure that the characters in +the path have the correct case. Otherwise you'll get an error saying +"Current working directory not under $PROJECT_BASE.". + + BUILDING ON QNX NEUTRINO ======================== @@ -151,6 +237,20 @@ Service Pack 1 for QNX Neutrino 6.3 must be installed, otherwise compiling the Foundation library will fail due to a problem with the header in the default (Dinkumware) C++ standard library. +When building on QNX, you might want to disable NetSSL_OpenSSL, Crypto and +some Data connectors, unless you have the necessary third party components +available: + +> ./configure --omit=NetSSL_OpenSSL,Crypto,Data/ODBC,Data/MySQL + + +BUILDING FOR VXWORKS +==================== + +Please see the VxWorks Platform Notes in the Reference Documentation for +more information. The Reference Documentation can be found online +at . + BUILDING ON OPENVMS =================== @@ -159,12 +259,12 @@ OpenVMS is no longer supported in recent versions of POCO, due to both a lack of interest and a lack of contributors. The following instructions are here for historical reasons. -The C++ Portable Components come with their own build system for OpenVMS, implemented +The POCO C++ Libraries come with their own build system for OpenVMS, implemented by a bunch of DCL scripts. The scripts can be found in the build/vms directory. -To build the C++ Portable Components on OpenVMS, follow the following steps. +To build the POCO C++ Libraries on OpenVMS, follow the following steps. -1) Download the .zip distribution of the C++ Portable Components +1) Download the .zip distribution of the POCO C++ Libraries 2) Unzip the archive $ unzip -aa poco-0_91_4.zip @@ -186,9 +286,9 @@ versions, use MORE INFORMATION ================ -For more information, see the Applied Informatics C++ Portable Components website -at . +For more information, see the POCO C++ Libraries website +at . -- -$Id: //poco/Main/dist/README#9 $ +$Id: //poco/1.4/dist/README#3 $ diff --git a/buildwin.cmd b/buildwin.cmd index 5e0ac635f..6274848ba 100644 --- a/buildwin.cmd +++ b/buildwin.cmd @@ -4,16 +4,27 @@ setlocal rem rem buildwin.cmd rem -rem command-line build script for MS Visual Studio +rem POCO C++ Libraries command-line build script +rem for MS Visual Studio 2003 to 2010 +rem +rem $Id: //poco/1.4/dist/buildwin.cmd#1 $ +rem +rem Copyright (c) 2006-2010 by Applied Informatics Software Engineering GmbH +rem and Contributors. +rem +rem Original version by Aleksandar Fabijanic. +rem Modified by Guenter Obiltschnig. rem rem Usage: rem ------ -rem buildwin VS_VERSION [ACTION] [LINKMODE] [CONFIGURATION] [SAMPLES] -rem VS_VERSION: 71|80|90 +rem buildwin VS_VERSION [ACTION] [LINKMODE] [CONFIG] [PLATFORM] [SAMPLES] [DEVENV] +rem VS_VERSION: 71|80|90|100 rem ACTION: build|rebuild|clean -rem LINKMODE: static|shared|both +rem LINKMODE: static_mt|static_md|shared|all rem CONFIG: release|debug|both -rem SAMPLES: yes|no +rem PLATFORM: Win32|x64|WinCE +rem SAMPLES: samples|nosamples +rem DEVENV: devenv|vcexpress rem rem VS_VERSION is required argument. Default is build all. @@ -24,27 +35,36 @@ set OPENSSL_LIB=%OPENSSL_DIR%\lib\VC set INCLUDE=%INCLUDE%;%OPENSSL_INCLUDE% set LIB=%LIB%;%OPENSSL_LIB% -set POCOBASE=%CD% +set POCO_BASE=%CD% +set PATH=%POCO_BASE%\bin;%PATH% -rem VS version {71|80|90} +rem VS version {71|80|90|100} if "%1"=="" goto usage set VS_VERSION=vs%1 +if "%7"=="" goto use_devenv +set BUILD_TOOL="%7" +goto use_custom +:use_devenv +set BUILD_TOOL=devenv +:use_custom + rem Action [build|rebuild|clean] set ACTION=%2 if not "%ACTION%"=="build" ( if not "%ACTION%"=="rebuild" ( if not "%ACTION%"=="" ( -if not "%ACTION%"=="clean" goto usage))) +if not "%ACTION%"=="clean" goto usage))) if "%ACTION%"=="" (set ACTION="build") rem Link mode [static|shared|both] set LINK_MODE=%3 -if not "%LINK_MODE%"=="static" ( +if not "%LINK_MODE%"=="static_mt" ( +if not "%LINK_MODE%"=="static_md" ( if not "%LINK_MODE%"=="shared" ( if not "%LINK_MODE%"=="" ( -if not "%LINK_MODE%"=="both" goto usage))) +if not "%LINK_MODE%"=="all" goto usage)))) rem Configuration [release|debug|both] set CONFIGURATION=%4 @@ -53,14 +73,28 @@ if not "%CONFIGURATION%"=="debug" ( if not "%CONFIGURATION%"=="" ( if not "%CONFIGURATION%"=="both" goto usage))) -rem Samples [yes|no] -set SAMPLES=%5 -if "%SAMPLES%"=="" (set SAMPLES=yes) +rem Platform [Win32|x64|WinCE] +set PLATFORM=%5% +if not "%PLATFORM%"=="" ( +if not "%PLATFORM%"=="Win32" ( +if not "%PLATFORM%"=="x64" ( +if not "%PLATFORM%"=="WinCE" goto usage))) + +if "%PLATFORM%"=="" (set PLATFORM_SUFFIX=) else ( +if "%PLATFORM%"=="Win32" (set PLATFORM_SUFFIX=) else ( +if "%PLATFORM%"=="x64" (set PLATFORM_SUFFIX=_x64) else ( +if "%PLATFORM%"=="WinCE" (set PLATFORM_SUFFIX=_CE)))) + +rem Samples [samples|nosamples] +set SAMPLES=%6 +if "%SAMPLES%"=="" (set SAMPLES=samples) -set RELEASE_SHARED=0 set DEBUG_SHARED=0 -set DEBUG_STATIC=0 -set RELEASE_STATIC=0 +set RELEASE_SHARED=0 +set DEBUG_STATIC_MT=0 +set RELEASE_STATIC_MT=0 +set DEBUG_STATIC_MD=0 +set RELEASE_STATIC_MD=0 if "%LINK_MODE%"=="shared" ( if "%CONFIGURATION%"=="release" (set RELEASE_SHARED=1) else ( @@ -72,102 +106,166 @@ if "%CONFIGURATION%"=="debug" (set DEBUG_SHARED=1) else ( if "%CONFIGURATION%"=="both" (set DEBUG_SHARED=1) else ( if "%CONFIGURATION%"=="" (set DEBUG_SHARED=1)))) -if "%LINK_MODE%"=="static" ( -if "%CONFIGURATION%"=="release" (set RELEASE_STATIC=1) else ( -if "%CONFIGURATION%"=="both" (set RELEASE_STATIC=1) else ( -if "%CONFIGURATION%"=="" (set RELEASE_STATIC=1)))) +if "%LINK_MODE%"=="static_mt" ( +if "%CONFIGURATION%"=="release" (set RELEASE_STATIC_MT=1) else ( +if "%CONFIGURATION%"=="both" (set RELEASE_STATIC_MT=1) else ( +if "%CONFIGURATION%"=="" (set RELEASE_STATIC_MT=1)))) -if "%LINK_MODE%"=="static" ( -if "%CONFIGURATION%"=="debug" (set DEBUG_STATIC=1) else ( -if "%CONFIGURATION%"=="both" (set DEBUG_STATIC=1) else ( -if "%CONFIGURATION%"=="" (set DEBUG_STATIC=1)))) +if "%LINK_MODE%"=="static_md" ( +if "%CONFIGURATION%"=="release" (set RELEASE_STATIC_MD=1) else ( +if "%CONFIGURATION%"=="both" (set RELEASE_STATIC_MD=1) else ( +if "%CONFIGURATION%"=="" (set RELEASE_STATIC_MD=1)))) -if "%LINK_MODE%"=="both" ( +if "%LINK_MODE%"=="static_mt" ( +if "%CONFIGURATION%"=="debug" (set DEBUG_STATIC_MT=1) else ( +if "%CONFIGURATION%"=="both" (set DEBUG_STATIC_MT=1) else ( +if "%CONFIGURATION%"=="" (set DEBUG_STATIC_MT=1)))) + +if "%LINK_MODE%"=="static_md" ( +if "%CONFIGURATION%"=="debug" (set DEBUG_STATIC_MD=1) else ( +if "%CONFIGURATION%"=="both" (set DEBUG_STATIC_MD=1) else ( +if "%CONFIGURATION%"=="" (set DEBUG_STATIC_MD=1)))) + +if "%LINK_MODE%"=="all" ( if "%CONFIGURATION%"=="debug" ( -set DEBUG_STATIC=1 +set DEBUG_STATIC_MT=1 +set DEBUG_STATIC_MD=1 set DEBUG_SHARED=1) else ( if "%CONFIGURATION%"=="release" ( -set RELEASE_STATIC=1 +set RELEASE_STATIC_MT=1 +set RELEASE_STATIC_MD=1 set RELEASE_SHARED=1) else ( if "%CONFIGURATION%"=="both" ( -set DEBUG_STATIC=1 +set DEBUG_STATIC_MT=1 +set DEBUG_STATIC_MD=1 set DEBUG_SHARED=1 -set RELEASE_STATIC=1 +set RELEASE_STATIC_MT=1 +set RELEASE_STATIC_MD=1 set RELEASE_SHARED=1) else ( if "%CONFIGURATION%"=="" ( -set DEBUG_STATIC=1 +set DEBUG_STATIC_MT=1 +set DEBUG_STATIC_MD=1 set DEBUG_SHARED=1 -set RELEASE_STATIC=1 +set RELEASE_STATIC_MT=1 +set RELEASE_STATIC_MD=1 set RELEASE_SHARED=1))))) if "%LINK_MODE%"=="" ( if "%CONFIGURATION%"=="debug" ( -set DEBUG_STATIC=1 +set DEBUG_STATIC_MT=1 +set DEBUG_STATIC_MD=1 set DEBUG_SHARED=1) else ( if "%CONFIGURATION%"=="release" ( -set RELEASE_STATIC=1 +set RELEASE_STATIC_MT=1 +set RELEASE_STATIC_MD=1 set RELEASE_SHARED=1) else ( if "%CONFIGURATION%"=="both" ( -set DEBUG_STATIC=1 +set DEBUG_STATIC_MT=1 +set DEBUG_STATIC_MD=1 set DEBUG_SHARED=1 -set RELEASE_STATIC=1 +set RELEASE_STATIC_MT=1 +set RELEASE_STATIC_MD=1 set RELEASE_SHARED=1) else ( if "%CONFIGURATION%"=="" ( -set DEBUG_STATIC=1 +set DEBUG_STATIC_MT=1 +set DEBUG_STATIC_MD=1 set DEBUG_SHARED=1 -set RELEASE_STATIC=1 +set RELEASE_STATIC_MT=1 +set RELEASE_STATIC_MD=1 set RELEASE_SHARED=1))))) +echo. +echo. +echo ######################################################################## +echo #### +echo #### STARTING VISUAL STUDIO BUILD (%VS_VERSION%, %PLATFORM%) +echo #### +echo ######################################################################## +echo. +echo. +echo The following configurations will be built: -echo Building: - -if %DEBUG_SHARED%==1 (echo debug_shared) -if %RELEASE_SHARED%==1 (echo release_shared) -if %DEBUG_STATIC%==1 (echo debug_static) -if %RELEASE_STATIC%==1 (echo release_static) +if %DEBUG_SHARED%==1 (echo debug_shared) +if %RELEASE_SHARED%==1 (echo release_shared) +if %DEBUG_STATIC_MT%==1 (echo debug_static_mt) +if %DEBUG_STATIC_MD%==1 (echo debug_static_md) +if %RELEASE_STATIC_MT%==1 (echo release_static_mt) +if %RELEASE_STATIC_MD%==1 (echo release_static_md) rem build for up to 4 levels deep for /f %%G in ('findstr /R "." components') do ( if exist %%G ( cd %%G for /f "tokens=1,2,3,4 delims=/" %%Q in ("%%G") do ( - if exist %%Q_%VS_VERSION%.sln ( + if exist %%Q%PLATFORM_SUFFIX%_%VS_VERSION%.sln ( echo. - echo ========== Building %%G ========== - if %DEBUG_SHARED%==1 (devenv /useenv /%ACTION% debug_shared %%Q_%VS_VERSION%.sln) - if %RELEASE_SHARED%==1 (devenv /useenv /%ACTION% release_shared %%Q_%VS_VERSION%.sln) - if %DEBUG_STATIC%==1 (devenv /useenv /%ACTION% debug_static %%Q_%VS_VERSION%.sln) - if %RELEASE_STATIC%==1 (devenv /useenv /%ACTION% release_static %%Q_%VS_VERSION%.sln) + echo. + echo ######################################################################## + echo #### + echo #### Building %%G + echo #### + echo ######################################################################## + echo. + if %DEBUG_SHARED%==1 (%BUILD_TOOL% /useenv /%ACTION% debug_shared %%Q%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %RELEASE_SHARED%==1 (%BUILD_TOOL% /useenv /%ACTION% release_shared %%Q%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %DEBUG_STATIC_MT%==1 (%BUILD_TOOL% /useenv /%ACTION% debug_static_mt %%Q%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %RELEASE_STATIC_MT%==1 (%BUILD_TOOL% /useenv /%ACTION% release_static_mt %%Q%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %DEBUG_STATIC_MD%==1 (%BUILD_TOOL% /useenv /%ACTION% debug_static_md %%Q%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %RELEASE_STATIC_MD%==1 (%BUILD_TOOL% /useenv /%ACTION% release_static_md %%Q%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) ) - if exist %%R_%VS_VERSION%.sln ( + if exist %%R%PLATFORM_SUFFIX%_%VS_VERSION%.sln ( echo. - echo ========== Building %%G ========== - if %DEBUG_SHARED%==1 (devenv /useenv /%ACTION% debug_shared %%R_%VS_VERSION%.sln) - if %RELEASE_SHARED%==1 (devenv /useenv /%ACTION% release_shared %%R_%VS_VERSION%.sln) - if %DEBUG_STATIC%==1 (devenv /useenv /%ACTION% debug_static %%R_%VS_VERSION%.sln) - if %RELEASE_STATIC%==1 (devenv /useenv /%ACTION% release_static %%R_%VS_VERSION%.sln) - ) - - if exist %%S_%VS_VERSION%.sln ( echo. - echo ========== Building %%G ========== - if %DEBUG_SHARED%==1 (devenv /useenv /%ACTION% debug_shared %%S_%VS_VERSION%.sln) - if %RELEASE_SHARED%==1 (devenv /useenv /%ACTION% release_shared %%S_%VS_VERSION%.sln) - if %DEBUG_STATIC%==1 (devenv /useenv /%ACTION% debug_static %%S_%VS_VERSION%.sln) - if %RELEASE_STATIC%==1 (devenv /useenv /%ACTION% release_static %%S_%VS_VERSION%.sln) + echo ######################################################################## + echo #### + echo #### Building %%G + echo #### + echo ######################################################################## + echo. + if %DEBUG_SHARED%==1 (%BUILD_TOOL% /useenv /%ACTION% debug_shared %%R%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %RELEASE_SHARED%==1 (%BUILD_TOOL% /useenv /%ACTION% release_shared %%R%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %DEBUG_STATIC_MT%==1 (%BUILD_TOOL% /useenv /%ACTION% debug_static_mt %%R%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %RELEASE_STATIC_MT%==1 (%BUILD_TOOL% /useenv /%ACTION% release_static_mt %%R%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %DEBUG_STATIC_MD%==1 (%BUILD_TOOL% /useenv /%ACTION% debug_static_md %%R%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %RELEASE_STATIC_MD%==1 (%BUILD_TOOL% /useenv /%ACTION% release_static_md %%R%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) ) - if exist %%T_%VS_VERSION%.sln ( + if exist %%S%PLATFORM_SUFFIX%_%VS_VERSION%.sln ( echo. - echo ========== Building %%G ========== - if %DEBUG_SHARED%==1 (devenv /useenv /%ACTION% debug_shared %%T_%VS_VERSION%.sln) - if %RELEASE_SHARED%==1 (devenv /useenv /%ACTION% release_shared %%T_%VS_VERSION%.sln) - if %DEBUG_STATIC%==1 (devenv /useenv /%ACTION% debug_static %%T_%VS_VERSION%.sln) - if %RELEASE_STATIC%==1 (devenv /useenv /%ACTION% release_static %%T_%VS_VERSION%.sln) + echo. + echo ######################################################################## + echo #### + echo #### Building %%G + echo #### + echo ######################################################################## + echo. + if %DEBUG_SHARED%==1 (%BUILD_TOOL% /useenv /%ACTION% debug_shared %%S%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %RELEASE_SHARED%==1 (%BUILD_TOOL% /useenv /%ACTION% release_shared %%S%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %DEBUG_STATIC_MT%==1 (%BUILD_TOOL% /useenv /%ACTION% debug_static_mt %%S%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %RELEASE_STATIC_MT%==1 (%BUILD_TOOL% /useenv /%ACTION% release_static_mt %%S%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %DEBUG_STATIC_MD%==1 (%BUILD_TOOL% /useenv /%ACTION% debug_static_md %%S%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %RELEASE_STATIC_MD%==1 (%BUILD_TOOL% /useenv /%ACTION% release_static_md %%S%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + ) + + if exist %%T%PLATFORM_SUFFIX%_%VS_VERSION%.sln ( + echo. + echo. + echo ######################################################################## + echo #### + echo #### Building %%G + echo #### + echo ######################################################################## + echo. + if %DEBUG_SHARED%==1 (%BUILD_TOOL% /useenv /%ACTION% debug_shared %%T%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %RELEASE_SHARED%==1 (%BUILD_TOOL% /useenv /%ACTION% release_shared %%T%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %DEBUG_STATIC_MT%==1 (%BUILD_TOOL% /useenv /%ACTION% debug_static_mt %%T%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %RELEASE_STATIC_MT%==1 (%BUILD_TOOL% /useenv /%ACTION% release_static_mt %%T%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %DEBUG_STATIC_MD%==1 (%BUILD_TOOL% /useenv /%ACTION% debug_static_md %%T%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %RELEASE_STATIC_MD%==1 (%BUILD_TOOL% /useenv /%ACTION% release_static_md %%T%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) ) ) - cd %POCOBASE% + cd %POCO_BASE% ) ) @@ -175,15 +273,23 @@ if "%SAMPLES%"=="no" goto :EOF rem root level component samples for /f %%G in ('findstr /R "." components') do ( - if exist %%G\samples\samples_%VS_VERSION%.sln ( + if exist %%G\samples\samples%PLATFORM_SUFFIX%_%VS_VERSION%.sln ( cd %%G\samples - echo. - echo ========== Building %%G/samples ========== - if %DEBUG_SHARED%==1 devenv /useenv /%ACTION% debug_shared samples_%VS_VERSION%.sln - if %RELEASE_SHARED%==1 devenv /useenv /%ACTION% release_shared samples_%VS_VERSION%.sln - if %DEBUG_STATIC%==1 devenv /useenv /%ACTION% debug_static samples_%VS_VERSION%.sln - if %RELEASE_STATIC%==1 devenv /useenv /%ACTION% release_static samples_%VS_VERSION%.sln - cd %POCOBASE% + echo. + echo. + echo ######################################################################## + echo #### + echo #### Building %%G/samples + echo #### + echo ######################################################################## + echo. + if %DEBUG_SHARED%==1 (%BUILD_TOOL% /useenv /%ACTION% debug_shared samples%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %RELEASE_SHARED%==1 (%BUILD_TOOL% /useenv /%ACTION% release_shared samples%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %DEBUG_STATIC_MT%==1 (%BUILD_TOOL% /useenv /%ACTION% debug_static_mt samples%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %RELEASE_STATIC_MT%==1 (%BUILD_TOOL% /useenv /%ACTION% release_static_mt samples%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %DEBUG_STATIC_MD%==1 (%BUILD_TOOL% /useenv /%ACTION% debug_static_md samples%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + if %RELEASE_STATIC_MD%==1 (%BUILD_TOOL% /useenv /%ACTION% release_static_md samples%PLATFORM_SUFFIX%_%VS_VERSION%.sln && echo. && echo. && echo.) + cd %POCO_BASE% ) ) @@ -192,12 +298,14 @@ goto :EOF :usage echo Usage: echo ------ -echo buildwin VS_VERSION [ACTION] [LINKMODE] [CONFIGURATION] [SAMPLES] -echo VS_VERSION: "71|80|90" +echo buildwin VS_VERSION [ACTION] [LINKMODE] [CONFIGURATION] [PLATFORM] [SAMPLES] [DEVENV] +echo VS_VERSION: "71|80|90|100" echo ACTION: "build|rebuild|clean" -echo LINKMODE: "static|shared|both" +echo LINKMODE: "static_mt|static_md|shared|all" echo CONFIG: "release|debug|both" -echo SAMPLES: "yes|no" -echo. +echo PLATFORM: "Win32|x64|WinCE" +echo SAMPLES: "samples|nosamples" +echo DEVENV: "devenv|vcexpress" +echo. echo Default is build all. -endlocal \ No newline at end of file +endlocal diff --git a/components b/components index 9db8b1863..509e7aa5a 100644 --- a/components +++ b/components @@ -13,3 +13,5 @@ Zip ApacheConnector WebWidgets WebWidgets/ExtJS +PageCompiler +PageCompiler/File2Page \ No newline at end of file diff --git a/configure b/configure index d732e4b9b..0bec23a10 100755 --- a/configure +++ b/configure @@ -2,7 +2,7 @@ # # configure # -# $Id: //poco/1.3/dist/configure#6 $ +# $Id: //poco/1.4/dist/configure#2 $ # # Configuration script for POCO. # @@ -43,15 +43,53 @@ Options: --no-wstring Compile with -DPOCO_NO_WSTRING. Useful if your C++ compiler does not support std::wstring - (such as uclibc-based systems). + (such as uClibc-based systems). --no-fpenvironment Compile with -DPOCO_NO_FPENVIRONMENT. Useful if your C++ compiler has incomplete floating-point support - (such as uclibc-based systems). + (such as uClibc-based systems). + + --no-sharedmemory + Compile with -DPOCO_NO_SHAREDMEMORY. + For systems that don't support shared memory API's, + like uClibc-based Linux systems. + + --no-sharedlibs + Compile with -DPOCO_NO_SHAREDLIBS. + For systems that don't support shared library loading. --omit={,} Do not build the specified component(s). + Example: --omit=Data/MySQL,Data/ODBC,Zip + + --include-path= + Add search path for header files. + + --library-path= + Add search path for library files. + + --cflags= + Pass additional flags to compiler. + Example: --cflags=-wall + + --poquito + Omit a few features for smaller codesize when linking + statically for embedded targets. + + --unbundled + Use system-provided zlib, pcre, expat and sqlite instead of + bundled ones. + + --static + Build static libraries. Overrides default mode, which + depends upon target. Can be specified together + with --shared to build both. + + --shared + Build shared libraries. Overrides default mode, which + depends upon target. Can be specified together + with --static to build both. ENDHELP } @@ -74,14 +112,19 @@ tests="tests" samples="samples" flags="" omit="" +includepath="" +librarypath="" +unbundled="" +static="" +shared="" # parse arguments while [ "$1" != "" ] ; do - val=`$EXPR "$1" : '--config=\(.*\)'` - if [ "$val" != "$NOTFOUND" ] ; then - config=$val; - fi - - val=`$EXPR "$1" : '--prefix=\(.*\)'` + val=`$EXPR "$1" : '--config=\(.*\)'` + if [ "$val" != "$NOTFOUND" ] ; then + config=$val + fi + + val=`$EXPR "$1" : '--prefix=\(.*\)'` if [ "$val" != "$NOTFOUND" ] ; then prefix=$val fi @@ -93,12 +136,27 @@ while [ "$1" != "" ] ; do val=`$EXPR "$1" : '--omit=\(.*\)'` if [ "$val" != "$NOTFOUND" ] ; then - omit="$omit `echo $val | tr ',;' ' '`" - fi - - if [ "$1" = "--no-samples" ] ; then - samples="" - fi + omit="$omit `echo $val | tr ',;' ' '`" + fi + + val=`$EXPR "$1" : '--include-path=\(.*\)'` + if [ "$val" != "$NOTFOUND" ] ; then + includepath="$includepath `echo $val | tr ',;' ' '`" + fi + + val=`$EXPR "$1" : '--library-path=\(.*\)'` + if [ "$val" != "$NOTFOUND" ] ; then + librarypath="$librarypath `echo $val | tr ',;' ' '`" + fi + + val=`$EXPR "$1" : '--cflags=\(.*\)'` + if [ "$val" != "$NOTFOUND" ] ; then + flags="$flags $val" + fi + + if [ "$1" = "--no-samples" ] ; then + samples="" + fi if [ "$1" = "--no-tests" ] ; then tests="" @@ -109,12 +167,37 @@ while [ "$1" != "" ] ; do fi if [ "$1" = "--no-fpenvironment" ] ; then - flags="$flags -DPOCO_NO_FPENVIRONMENT" - fi + flags="$flags -DPOCO_NO_FPENVIRONMENT" + fi - if [ "$1" = "--help" ] ; then - showhelp - exit 0 + if [ "$1" = "--no-sharedmemory" ] ; then + flags="$flags -DPOCO_NO_SHAREDMEMORY" + fi + + if [ "$1" = "--no-sharedlibs" ] ; then + flags="$flags -DPOCO_NO_SHAREDLIBS" + fi + + if [ "$1" = "--poquito" ] ; then + flags="$flags -DPOCO_NO_FILECHANNEL -DPOCO_NO_SPLITTERCHANNEL -DPOCO_NO_SYSLOGCHANNEL -DPOCO_UTIL_NO_INIFILECONFIGURATION -DPOCO_UTIL_NO_XMLCONFIGURATION" + fi + + if [ "$1" = "--unbundled" ] ; then + flags="$flags -DPOCO_UNBUNDLED" + unbundled=1 + fi + + if [ "$1" = "--static" ] ; then + static=1 + fi + + if [ "$1" = "--shared" ] ; then + shared=1 + fi + + if [ "$1" = "--help" ] ; then + showhelp + exit 0 fi shift @@ -144,12 +227,27 @@ if [ ! -f "$base/build/config/$config" ] ; then fi if [ "$prefix" = "" ] ; then - prefix=/usr/local + prefix=/usr/local +fi + +# check for patches +if [ -d $base/patches/$config ] ; then + echo "NOTE: There are patches for your configuration available. Please apply them before compiling." fi # copy Makefile to build dir if [ "$base" != "$build" ] ; then - cp $base/Makefile $build + cp $base/Makefile $build +fi + +if [ "$static" != "" -a "$shared" != "" ] ; then + linkmode=BOTH +elif [ "$static" != "" ] ; then + linkmode=STATIC +elif [ "$shared" != "" ] ; then + linkmode=SHARED +else + linkmode="" fi # create config.make @@ -161,18 +259,40 @@ echo "POCO_PREFIX = $prefix" >>$build/config.make echo "POCO_FLAGS = $flags" >>$build/config.make echo "OMIT = $omit" >>$build/config.make if [ "$stdcxx_base" != "" ] ; then - echo "STDCXX_BASE = $stdcxx_base" >>$build/config.make + echo "STDCXX_BASE = $stdcxx_base" >>$build/config.make +fi +if [ "$includepath" != "" ] ; then + echo "POCO_ADD_INCLUDE = $includepath" >>$build/config.make +fi +if [ "$librarypath" != "" ] ; then + echo "POCO_ADD_LIBRARY = $librarypath" >>$build/config.make +fi +if [ "$unbundled" != "" ] ; then + echo "POCO_UNBUNDLED = 1" >>$build/config.make +fi +if [ "$linkmode" != "" ] ; then + echo "LINKMODE = $linkmode" >>$build/config.make fi - echo "export POCO_CONFIG" >>$build/config.make echo "export POCO_BASE" >>$build/config.make echo "export POCO_BUILD" >>$build/config.make echo "export POCO_PREFIX" >>$build/config.make echo "export POCO_FLAGS" >>$build/config.make if [ "$stdcxx_base" != "" ] ; then - echo "export STDCXX_BASE" >>$build/config.make + echo "export STDCXX_BASE" >>$build/config.make +fi +if [ "$includepath" != "" ] ; then + echo "export POCO_ADD_INCLUDE" >>$build/config.make +fi +if [ "$librarypath" != "" ] ; then + echo "export POCO_ADD_LIBRARY" >>$build/config.make +fi +if [ "$unbundled" != "" ] ; then + echo "export POCO_UNBUNDLED" >>$build/config.make +fi +if [ "$linkmode" != "" ] ; then + echo "export LINKMODE" >>$build/config.make fi - echo ".PHONY: poco" >>$build/config.make echo "poco: libexecs $tests $samples" >>$build/config.make diff --git a/libversion b/libversion index 1e8b31496..48082f72f 100644 --- a/libversion +++ b/libversion @@ -1 +1 @@ -6 +12