2011-08-30 tommi@tntnet.org

 - fix crash in http server when last service is removed manually

2011-08-28 tommi@tntnet.org

 - fix potential memory leak
 - remove unused template parameter

2011-08-26 tommi@tntnet.org

 - implement binary serializer/deserializer

2011-08-26 tommi@tntnet.org

 - helper classes for controling input or output using command line argument

2011-08-12 tommi@tntnet.org

 - fix error checking in iconvstream

2011-06-24 tommi@tntnet.org

 - fix for clang++: looks like it is pinkier about missing this when accessing members of base classes in template classes

2011-06-05 tommi@tntnet.org

 - ignore SIGPIPE in http server

2011-06-05 tommi@tntnet.org

 - read body into request body in http server by default

2011-06-04 tommi@tntnet.org

 - regular expressions can now be used for mapping to responder in http server

2011-05-31 tommi@tntnet.org

 - do not throw after fork but just exit with -1 in command input and output

2011-05-26 tommi@tntnet.org

 - remove now obsolet class process.cpp

2011-05-23 tommi@tntnet.org

 - remove obsolete cxxtools::SysError class (replaced with cxxtools::SystemError long time ago)

2011-05-22 tommi@tntnet.org

 - add classes cxxtools::posix::CommandInput and cxxtools::posix::CommandOutput for easily reading from and writing to processes

2011-05-21 tommi@tntnet.org

 - move Fork-class from cxxtools to cxxtools::posix namespace
 - add a wrapper cxxtools::posix::Exec around exec??-functions of posix

2011-05-21 tommi@tntnet.org

 - inherit pipe filedescriptor by default in cxxtools::posix::Pipe

2011-05-19 tommi@tntnet.org

 - set default char ? to cxxtools::Char::narrow
 - use ? instead of _ as default in cxxtools::String::narrow
 - fix error message in xml reader when unexpected character is found

2011-05-08 tommi@tntnet.org

 - add conversion function from std::string to std::string (just assignment)

2011-05-06 tommi@tntnet.org

 - print log messages to stderr instead of stdout

2011-04-29 tommi@tntnet.org

 - add beautify flag to static toString methods of xml and json serializers

2011-04-29 tommi@tntnet.org

 - add link and symlink methods to file class

2011-03-29 tommi@tntnet.org

 - fix stopping http server without listener

2011-03-27 tommi@tntnet.org

 - remove cxxtools::sodo - it was non functional anyway

2011-03-26 tommi@tntnet.org

 - split rpcecho demo into separate client and server for simplification
 - add documentation and unit test to smartptr and do some minor fixes
 - make destroy policy method public in smartptr (it is called in tntnet directly)

2011-03-24 tommi@tntnet.org

 - make null from nan, inf and -inf in json serializer

2011-02-27 tommi@tntnet.org

 - reimplement cxxtools::pool using smart pointer instead of proxy object

2011-02-04 tommi@tntnet.org

 - do not pass output_iterator as reference to QueryParams::get to get unnamed params; iterators should be always by value

2011-02-03 tommi@tntnet.org

 - do not put boolean values into quotation marks in json

2011-01-31 tommi@tntnet.org

 - add demo for json serializer in a http server
 - accept "inifity" for float and double values in convert
 - add put_top method to cache to use it as a simple lru cache

2011-01-29 tommi@tntnet.org

 - improved support nan and inf in conversion functions for float and double

2011-01-26 tommi@tntnet.org

 - fix include guard in atomicity.h

2011-01-24 tommi@tntnet.org

 - fix data type in conversion function
 - fix license header
 - do not inline larger functions in cxxtools::convert

2011-01-23 tommi@tntnet.org

 - add compare operators to cxxtools::DateTime
 - move some larger methods from DateTime to cpp file and other small code cleanup

2011-01-16 tommi@tntnet.org

 - do not use explicit IPv4 addresses in xmlrpc unittest

2011-01-15 tommi@tntnet.org
 - add static toString and toObject methods to serializers and deserializer to simplify api

2010-12-31 tommi@tntnet.org
 - fix some problems due to apache stl (were issues in cxxtools - not apache stl)

2010-12-28 tommi@tntnet.org
 - bugfix: accidentally removed allocation for string when copied
 - 2 fixes for xmldeserialation:
   - move type from tag name back to typeName in serializationinfo
   - do not change category from Array to Object when elements are added to an array

2010-12-27 tommi@tntnet.org
 - add category to xmlserializer
 - set type of serializationinfo in xmlrpc scanner
 - reduce some more allocations

2010-12-21 tommi@tntnet.org
 - reduced library size by inlining trivial methods and other small optimizations

2010-12-19 tommi@tntnet.org
 - reduced allocations

2010-12-18 tommi@tntnet.org
 - reverse xml entity resolver
 - better error reporting in failed unittests
 - cxxtools::OStringStream and cxxtools::IStringStream as typedefs
 - use reverse xml entity resolver in xml writer
 - fix reading xml entities in xml attribute values
 - pass strings by const reference instead of const copies in xml reader

2010-12-17 tommi@tntnet.org
 - remove need for static initialization and locking in xml entityresolver
 - add xmlreader test frame

2010-12-16 tommi@tntnet.org
 - set xml attribute "type" in xmlserializer and read it in deserializer
 - clean up some code (breaking abi)

2010-12-16 tommi@tntnet.org
 - fix parsing options like --option=value

2010-12-13 tommi@tntnet.org
 - small optimization in tcpserver: don't use poll in accept, if we have only one listener
 - use static entity map with delayed initialization in xmlreader

2010-12-10 tommi@tntnet.org
 - add query and fragment parts to uri class

2010-12-07 tommi@tntnet.org
 - accept dates, times and datetimes with discrete components in deserialization

2010-11-21 tommi@tntnet.org
 - set user agent header in http client if not set by user

2010-11-20 tommi@tntnet.org
 - fix handling of detached threads
 - support for special characters in xml attributes as well as html entities
   add all html4 entities into default list of entities in entityresolver
   delay instantiation of entityresolver until really needed

2010-11-17 tommi@tntnet.org
 - fix for serialization of std::pair (type name was not set)

2010-11-13 tommi@tntnet.org
 - reduce compiler warnings by cleaning up code

2010-11-08 tommi@tntnet.org
 - add constructor and connect with cxxtools::net::Uri method to xmlrpc client
 - take username and password from uri in xmlrpc client
 - add default constructor to uri class

2010-11-07 tommi@tntnet.org
 - add class cxxtools::net::Uri for parsing uris

2010-11-05 tommi@tntnet.org
 - close socket in http client when new address is set
 - make selector settable in cxxtools::xmlrpc::HttpClient

2010-11-01 tommi@tntnet.org
 - add serialization operators to Date, Time and DateTime

2010-10-29 tommi@tntnet.org
 - new method clear in cxxtools::Cache to clear the cache

2010-10-17 tommi@tntnet.org
 - add cxxtools prefix to md5 code to prevent name clash with other md5 libraries

2010-10-14 tommi@tntnet.org
 - new member template function SerialzationInfo::getMember(name, value), which
   deserializes a member only if the value is found and do not throw, if the
   member is not found; a success flag is returned as bool

2010-10-08 tommi@tntnet.org
 - add serialization operator for string constant

2010-10-04 tommi@tntnet.org
 - add helper templates cxxtools::md5

2010-09-12 tommi@tntnet.org
 - fix handling of IPv6 in server socket
 - add configure check for IPv6
 - new utility functions split, join and trim

2010-08-19 tommi@tntnet.org
 - fixes for atomicity on sun
 - fix compile problem for atomicity for arm

2010-08-17 tommi@tntnet.org
 - fix reading of chunked encoded data in http client

2010-08-01 tommi@tntnet.org
 - release 2.0

2010-06-16 tommi@tntnet.org
 - flush textstream in finish method of xml- and jsonserializer

2010-06-07 tommi@tntnet.org
  - fix race condition in http server when handling idle sockets

2010-04-05 tommi@tntnet.org
 - add template class Argp for reading arguments with parameter and add unit tests for Arg* template classes

2010-03-24 tommi@tntnet.org
 - add support for TCP_DEFER_ACCEPT

2010-03-22 tommi@tntnet.org
 - support for out of tree builds

2010-03-19 tommi@tntnet.org
 - replace errorOccured signal with throwing errors in endXXX-methods

2010-03-07 tommi@tntnet.org
 - make url settable in http xmlrpc client

2010-03-02 tommi@tntnet.org
 - add new BasicEvent template for easier event definition and use it in http server

2010-02-27 tommi@tntnet.org
 - add template class for (thread-)queue
 - add support for listen on any socket and connect to any local by passing an empty ip address
 - run http server in event loop
 - add exited signal to event loop

2010-02-07 tommi@tntnet.org
 - accept gets a inherit flag instead of closeOnExec

2010-02-06 tommi@tntnet.org
 - add new class cxxtools::Cache

2010-02-05 tommi@tntnet.org
 - add mutex to service list in httpserver, so that other threads may add or
   remove services while the server is running

2010-02-04 tommi@tntnet.org
 - extend number of parameters in xmlrpc clienth from 5 to 10

2010-02-03 tommi@tntnet.org
 - add cancel method to http client, xmlrpc client and iodevice

2009-12-27 tommi@tntnet.org
 - remove cxxtools::Dynbuffer (use std::vector instead)

2009-12-22 tommi@tntnet.org
 - split pipe class into generic and posix specific functionality

2009-12-21 tommi@tntnet.org
 - remove old compatibility typedefs cxxtools::net::Server and cxxtools::net::Stream

2009-12-17 tommi@tntnet.org
 - new static methods Utf8Codec::encode and Utf8Codec::decode

2009-12-06 tommi@tntnet.org
 - make building of demos and unittests optional by configure flags --disable-demos and --disable-unittest

2009-11-16 tommi@tntnet.org
 - support for FD_CLOEXEC flag on sockets and support for accept4 (conditional by configure check)

2009-11-15 tommi@tntnet.org
 - improve Process class

2009-11-03 tommi@tntnet.org
 - merge cxxtools::ext::Pipe and cxxtools::Pipe into cxxtools::Pipe

2009-10-30 tommi@tntnet.org
 - make SimpleRefCounted the default in RefCounted again

2009-10-16 tommi@tntnet.org
 - new class cxxtools::net::AddrInfo, which encapsulates ip and port
 - let cxxtools::RefCounted use atomic_t
 - support for multiple listeners to httpserver

2009-09-06 tommi@tntnet.org
 - extract http code from xmlrpc client into a separate class

2009-08-28 tommi@tntnet.org
 - do not indent json by default but make it optional

2009-08-25 tommi@tntnet.org
 - support for chunked encoding transfer in http-client

2009-08-18 tommi@tntnet.org
 - add support for authentication to http server

2009-08-02 tommi@tntnet.org
 - add http authorization to http client

2009-07-05 tommi@tntnet.org
 - compile iconvstream only if explicitely configured

2009-07-03 tommi@tntnet.org
 - implement json serializer

2009-07-03 d-marc
 - added settings and xml serialization

2009-06-21 tommi@tntnet.org
 - add serialization for all std container templates

2009-06-12 tommi@tntnet.org
 - add new rpcclient and server demo rpcecho

2009-06-02 tommi@tntnet.org
 - propagte connect error in http client through errorOccured signal

2009-05-31 tommi@tntnet.org
 - serialization for std::deque

2009-05-28 tommi@tntnet.org
 - improved exception handling in xmlrpc

2009-05-27 tommi@tntnet.org
 - serializer for std::list and std::set

2009-04-04 tommi@tntnet.org
 - move http to a separate library
 - move net-headers to own subdirectory

2009-04-03 d-marc
 - throw on endConnect if connect failed

2009-04-03 d-marc
 - added xmlrpc library

2009-04-02 d-marc
 - added xml reader and writer

2009-04-02 d-marc
 - added serializer, deserializer and serializationinfo class

2009-04-01 d-marc
 - added stringstream

2009-04-01 d-marc
 - added codecs

2009-03-31 d-marc
 - added textstreams

2009-03-26 d-marc
 - added unicode capable string class

2009-03-26 tommi@tntnet.org
 - make httpserver multithreaded

2009-03-23 d-marc
 - added unicode char class

2009-03-23 d-marc
 - added getSystemTime method

2009-03-22 tommi@tntnet.org
 - http client rewritten and new http server

2009-02-27 tommi@tntnet.org
 - new FreeDestroyPolicy for smart pointers

2009-02-23 d-marc
 - added TCP iostream

2009-02-19 d-marc
 - added unit test for tcp

2009-02-18 d-marc
 - added unit testing library

2009-02-17 d-marc
 - sockets are always async

2009-02-16 tommi@tntnet.org
 - return std::string for ip adresses instead of system specific structure

2009-02-13 tommi@tntnet.org
 - make destroy policy methods of smart pointer public

2009-02-13 d-marc
 - added blocking connect

2009-02-11 d-marc
 - renamed to TcpServer

2009-02-10 d-marc
 - added signal for pending connections

2009-02-10 d-marc
 - TcpServersocket is a Selectable

2009-02-09 d-marc
 - moved tcp server socket to separate header

2009-02-09 d-marc
 - moved addrinfo to separate files

2008-12-19 d-marc
 - added streambuf for iodevices

2008-12-18 d-marc
 - added semaphore class

2008-12-17 d-marc
 - new classes EventLoop, Process, IODevice, Selectable, Selector, Application, Timer

2008-12-16 tommi@tntnet.org
 - new methods in pipe to easily redirect stdin, stdout and stderr

2008-12-16 tommi@tntnet.org
 - new method cxxtools::net::iostream::canRead()

2008-12-12 d-marc
 - added event soure and sink class

2008-12-02 d-marc
 - added singleton template and typetraits

2008-12-02 d-marc
 - added high precision system clock

2008-12-02 d-marc
 - added date and time classes

2008-12-01 tommi@tntnet.org
 - default to maxbackupindex of 2 instead of 10 in cxxtools-config-script

2008-12-01 tommi@tntnet.org
 - use spinlock instead of mutex in logger

2008-12-01 d-marc
 - added conversion algos

2008-11-26 d-marc
 - mutex class consolidation; Added more IOError types

2008-11-25 d-marc
 - added tryReadLock and tryWriteLock for ReadWriteMutex

2008-11-24 d-marc
 - added IOError and AccessFailed

2008-11-19 d-marc
 - renamed timedwait in condition

2008-11-05 tommi@tntnet.org
 - rename RWLock to RWMutex and add typedef for old name for compatibility

2008-11-04 d-marc
 - unified attached and detached thread classes

2008-10-30 d-marc
 - use callables as thread functors

2008-09-12 tommi@tntnet.org
 - add LGPL exception for large templates and macros

2008-08-14 d-marc
 - added tryLock method to SpinMutex

2008-08-08 tommi@tntnet.org
 - move mutex classes into separate files and add spinlock mutex

2008-07-03 tommi@tntnet.org
  - don't throw exceptions when logging fails

2008-06-18 tommi@tntnet.org
  - use non-atomic reference counting by default and add atomic refcounted class and smart pointer policy

2008-06-10 d-marc
  - added new file/dir API

2008-06-18 tommi@tntnet.org
  - split referencecounting into a thread safe and a non thread safe variant

2008-06-03 tommi@tntnet.org
  - release version 1.4.8

2008-05-02 tommi@tntnet.org
  - change the way of announcing configure results to headers

2008-05-01 tommi@tntnet.org
  - use pipl-idiom in cxxtools::Dir to remove needed includes in public header
  - allow ':' in httprequests and other small improvements and add
    documentation to http client classes
  - add wrapper for regex(3)

2008-03-31 marc
  - added conversion functions

2008-03-27 tommi@tntnet.org
  - increase default tcp buffer size from 256 to 8192 bytes

2008-03-09 tommi@tntnet.org
  - remove the queing of log messages since it was not reliable
  - translate api-documentation of network classes to english
  - add a flush parameter to cxxtools::net::Stream::write to allow partial
    writes and use this in cxxtools::net::iostream::overflow, so that overflow
    always tries to write the full buffer.

2008-02-21 tommi@tntnet.org
  - new command line utility cxxlog to use the logger in shell scripts

2008-12-27 tommi@tntnet.org
  - add classes for creation of mime mails

2007-11-13 tommi@tntnet.org
  - optimization of logging

2007-11-03 tommi@tntnet.org
  - functions for handling endianess (cxxtools/byteorder.h)
  - atomic increment and decrement wrappers (Marc)

2007-11-01 tommi@tntnet.org
  - cxxtools::Any and compile-time typeinfo (Marc)

2007-10-17 tommi@tntnet.org
  - remove libltdl code completely
  - implement destroy-policy for cxxtools::SmartPtr

2007-10-12 tommi@tntnet.org
  - signal-slot (Marc)

2007-09-16 tommi@tntnet.org
  - don't use libltdl by default since it brings more problems than it solves.
    On linux we need RTLD_GLOBAL in dlopen to make exceptions and rtti
    working. libltdl does not pass that flag. On Aix shared libraries has a
    extension .a by default, which is not recognized by libltdl.

2007-07-07 tommi@tntnet.org
  - rewritten ini-file-parser
  - make iconv unconditional and make iconv-buffer bigger for better
    performance
  - properties-file-parser

2007-07-06 tommi@tntnet.org
  - add policy based smart pointer implementation
  - add NonCopyable-class, which can be used as a base-class for objects,
    which must not be copied
  - fix bug in subtraction-method of cxxtools::HiresTime

2007-05-12 tommi@tntnet.org
  - logging can be disabled completely now in the logging-properties by
    setting disabled to 1 (or 'y' or 'Y' or 't' or 'T')

2007-05-11 tommi@tntnet.org
  - make cxxtools::Pool working again
  - build-improvements (port to solaris/SunStudio)

2007-05-04 tommi@tntnet.org
  - replace std::string with char* as a buffer in udpstream-class
  - remove RWLOCK_MUTEX_INITIALIZER because this is unknown on Mac OS X and
    the rwlock_t-structure is anyway initalized with pthread_rwlock_init

2007-05-03 tommi@tntnet.org
  - bugfix: clear buffer of udpstream after sending message
  - make cxxtools::socket::doPoll-method public and rename to poll

2007-04-26 tommi@tntnet.org
  - try next addrinfo, when socket-creation fails. Previously cxxtools fails
    to create a socket, if first addrinfo-entry does not work.

2007-04-20 tommi@tntnet.org
  - fix stream-classes to conform ANSI

2007-04-18 tommi@tntnet.org
  - remove double-lock in pool-class, which resulted in a deadlock on solaris

2007-04-17 tommi@tntnet.org
  - another change in initialization in std::ios-derived classes after reading
    the c++-standard (now std::ios::init is used for initialization)

2007-04-11 tommi@tntnet.org
  - don't pass uninitialized std::streabuf to base-class in classes
    derived from std::[io]stream. This should be ok, but at least
    Sun Studio 11 fails here.

2007-03-25 tommi@tntnet.org
  - replace semaphore with condition in cxxtools::Pool and make max-size
    of pool settable

2007-03-23 tommi@tntnet.org
  - add error-checking for glob in cxxtools::multifstreambuf

2007-02-20 tommi@tntnet.org

  - fix stupid bug in tcp-class. Stream reported eof when only part of
    data was written.

2007-01-24 tommi@tntnet.org

  - wrappers for fork(2) and pipe(2) and a std::iostream on top of pipe(2)
  - cxxtools::Fdstream: std::iostream for filedescriptors

2007-01-21 tommi@tntnet.org
  - support for udp-broadcast
  - don't throw exception in tcpstream, when connection is closed
    report eof instead

2007-01-15 tommi@tntnet.org

  - make offset in hexdumper settable
  - logging-improvement (don't try to output current logstatement when
    exception occurs during creation of log-message)
  - Condition::timedwait

2006-12-31 tommi@tntnet.org

  - improve eof-handling in socket-class

2006-12-28 tommi@tntnet.org

  - log process-id
  - bugfix in cxxtools::UdpReceiver: adress-length-field was not initialized

2006-12-20 tommi@tntnet.org

  - make constuctor for QueryParams::const_iterator explicit to prevent
    accidentally converting QueryParams-objects into const_iterator

2006-11-22 tommi@tntnet.org

  - make loggers more private and instantiate existing loggers later
  - "putchar" is a macro somewhere - rename member-method to workaround
    this name-conflict

2006-11-20 tommi@tntnet.org

  - fix tcpstream to correctly report end-of-file in all circumstances

2006-09-11 tommi@tntnet.org

  - fixed buffer-overflow in logger when formatting dates

2006-08-10 tommi@tntnet.org

  - new helper-class IConverter for easier usage of iconv(3) and iconvstream

2006-07-27 tommi@tntnet.org

  - fix iconvstream

2006-06-21 tommi@tntnet.org

  - license changed to LGPL

2006-05-24 tommi@tntnet.org

  - fix tcp-client: create socket when known, which to create
    this fixes also problems in running any applications on systems without
    IPv6

2006-04-27 tommi@tntnet.org

  - support for IPv6

2006-04-16 tommi@tntnet.org

  - fixes for AIX-compatibility

2006-04-06 tommi@tntnet.org

  - faster formatting of logmessages

2006-04-04 tommi@tntnet.org

  - flushdelay works now with rolling-files
  - ANSI-C++-fixes

2006-03-02 tommi@tntnet.org

  - new logging-parameter flushdelay, which speeds up logging
    by starting a backgroundthread, which flushes asynchronous

2005-01-20 tommi@tntnet.org

  - thread-classes simplified and demo improved
  - output of log-messages speed-optimized

2005-12-12 tommi@tntnet.org

  - improved error-checking in network-classes
  - logging integrated into base-lib (no libcxxtools-log.so any more)

2005-11-08 tommi@tntnet.org

  - cxxtools::Thread split into cxxtools::AttachedThread and cxxtools::DetachedThread

2005-11-04 tommi@tntnet.org

  - bugfix in cxxtools::HttpRequest

2005-09-18 tommi@tntnet.org

  - udp-reply

2005-07-19 tommi@tntnet.org

  - new namingconventions: classfiles start with capitals, methods with lower
    case
  - support for udp-messages (cxxtools::UdpSender, cxxtools::UdpReceiver)
  - logging through udp

2005-07-15 tommi@tntnet.org

  - fixed some method-names to conform common naming convetions

2005-06-18 tommi@tntnet.org

  - version 1.3.1 released
  - fixed copy-constructor for query_params

2005-01-29 tommi@tntnet.org

  - version 1.3.0 released
  - modified timeout-handling in tcpstream
  - simple http-client added
  - cxxtools::Condition is not derived from cxxtools::Thread any more

2005-01-05 tommi@tntnet.org

  - version 1.2.3 released
  - missing errno.h in iconvstream.cpp added
  - support in cxxtools::arg for multiple alternative switches
    in a single arg-variable (set-method)
  - use gethostbyname to determine address to listen, so you can
    specify a hostname as a listener-parameter

2004-12-14 tommi@tntnet.org

  - version 1.2.2 released
  - bug fixed: cxxtools::arg does not find user-specific inputstreamoperators
  - support for log4cxx
  - logging-library selectable at build-time

2004-12-03 tommi@tntnet.org

  - version 1.2.1 released
  - removed obsolete timeclass.cpp
  - switched dl-classes to libtool for better portability
  - skip iconvstream if libiconv is not installed
  - new library: logging-wrapper for log4cplus (log4cxx-support will follow)
  - simple lightweight logging-library as a alternative for log4cplus

2004-11-25 tommi@tntnet.org

  - version 1.2 released
  - all classes moved to namespace cxxtools
  - documentation-updates (most classes documented with doxygen-style comments

2004-11-11 tommi@tntnet.org

  - version 1.1.3 released
  - error in eof-handling in base64 fixed

 -- Tommi Maekitalo <tommi@epgmbh.de>  Thu, 11 Nov 2004 12:33:47 +0100

2004-11-03 tommi@tntnet.org

  - version 1.1.2 released
  - new class base64stream

2004-10-04 tommi@tntnet.org

  - use libtool/autoconf/automake

2004-09-16 tommi@tntnet.org

  - version 1.1 released
  - unused variable in tcpstream.h removed
    this breaks binary-compatibility

2004-03-23 tommi@tntnet.org

  - Initial Release 1.0.
