Changes
-------------------------
0.42 - made a "char" array in the charstring classh explicitly "signed char"
for arm and similar platforms where "char" is actually
"unsigned char"
fixed variadic macros in codetree class for MSVC
fixed rpm->rpmbuild in installation docs
0.41 - fixed a few bugs in the codetree class and improved its debug
added comments to codetree class header
added new search paths and default prefix for syllable
initialized an uninitialized variable in clientsocket
added support for syllable os
0.40 - fixed -pthread annoyance
added -Werror to default build
fixed various issues revealed by -Werror
fixed hostentry::getAddressString() for numbers greater than 127
fixed bugs that could lead to a crash when using the hostentry class
with NULL hostnames
reads that error out with EAGAIN are treated as successful reads of 0
bytes now
all sockets are manually set to blocking mode after creation now
sockets created by accept() are set to the blocking/non-blocking mode
of the socket that was accepted on
fixed charstring::safeCopy to copy the NULL terminator
made charstring::copy NULL-safe
refactored windows make.bat script
made crypt class salt NULL-safe
0.39 - filedescriptor::getPeerAddress returns NULL now for non-inet sockets
added charstring::safeCopy methods
made regularexpression::getSubstring* methods return const char *'s
fixed a bug where xmldomnode::deleteAttribute() on a non-existent
attribute name would crash
added xmldomnode::getTree and xmldomnode::print methods
added codetree class
fixed a longstanding memory leak in dictionary::clear()
0.38 - included some contributed updates to chat, charstring and modemclient
added several more wrappers to system class
refactored configure/make for non-gnu make compatibility
upated passFileDescriptor to dynamically allocate the control buffer
for OS X 10.7 whos CMSG_LEN ultimately calls a function
updated msvc build to create Release code rather than Debug by default
added posix analogs (rewind, skip and read) to directory class
updated filedescriptor debug so debugging of the buffering can be
enabled/disabled
integrated patches from Neowiz for:
using -g3 if available when --enable-debug is specified
testing the result of getaddrinfo for any non-zero result
when checking for EINTR, not just EAI_SYSTEM,
and also to reset errno between tries
clientsocket to use WSAConnect and friends on windows
disabling code that uses AF_UNIX sockets outright for windows
inetserversocket::listen() to reuse addresses
added process::exitImmediately
updated error::getErrorString() to be thread safe when it uses
strerror_r or strerror_s internally
fixed charstring::isInteger/isNumber to return false when the string
passed in is either - or . without any actual number
changed longs in snooze class to uint32_t's
0.37 - updated logger to exclude : if header isn't supplied
updated logger not to print double-returns after each log message
added file::createPipe()
fixed net-to-host and host-to-net byte order conversions for 64-bit
integers on windows
fixed charstring::copy that I'd broken in 0.36
fixed missing [] in a delete in filedescriptor::read() with terminator
that could cause leaks and corruption
fixed a leak in filedescriptor::read() with terminator that could
occur when it fell through with an error, timeout or 0-byte
read
applied Georgiy Kirichenko's fix to the safePoll call in
filedescriptor::readFileDescriptor() - swapped true/false
arguments so it would wait using POLLIN
added xmldomnode::getPosition()
fixed display of seconds from datetime::getString()
fixed optimum buffer size calculation in xmlsax
fixed several dlclose()-related bugs
0.36 - various fixes for SCO and Ultrix
renamed some methods to avoid collisions with macros
modified methods that take or return internal structures to take or
return void pointers instead
added charstring::replace methods
renamed all .C files to .cpp for windows
added msvc project and got most classes building natively on windows
0.35 - added ( to set of chars to capitalize after
added methods to control whether semaphoreset operations are retried
after they have been interrupted by a signal
added charstring::findFirstOrEnd
added character::inSet
Changes in 0.34
* fixed some STATFS/FSTATFS that needed to be CHAR-versions of the calls
* added test for utime and utime.h
* utime is used on platforms that don't have utimes
* updated process class methods to return -1 and set ENOSUPP for
process-group related calls on systems that don't have the
concept of process-groups
* added a call to select() instead of poll() for file-descriptor passing
for systems that don't support poll()
* added tests for timespec in various header files
* added test for dlopen
* updated configure script not to outright disable classes if the
functions they're dependent on aren't found, but rather for
the methods to return erros and set errno to ENOSYS
* added netapi32 on mingw
* updated vfstab detection to reflect minix/haiku-style rather than just
haiku
* moved non-member variables and methods into daemonprocess class and
its private class
* updated xmldomnode to output xml entities rather than raw characters
* fixed a bug that caused numeric xml entities greater than 127 to get
set to 127
* updated mutex class to show a consistent interface on all platforms
* updated configure script to detect pthreads properly on minix
* cleaned up semaphoreset class
* lots of mingw32 compatibility fixes
* wrapped exit() in process class
Changes in 0.33
* removed configure tests for strlcpy and strlcat
* added test for pvt->_translatebyteorder to hostToNet/netToHost for
64bit numbers
* made filedescriptor::hostToNet/netToHost public and static, moved
translatebyteorder flag test out of them
* serviceentry and inet*socket classes use
filedescriptor::hostToNet/netToHost rather than htonl/htons
* added charstring::printBits methods
* xmlsax class uses optimizations even when not using mmap now
* updated linkedlist class a good bit
* applied Renat Sabitov's logger patch
* fixed some bugs where filesystem.C wouldn't compile on platforms where
statfs can return some strings
* haiku port
* implemented bswap for systems with nothing like it
* added #ifdef's in configure script for all header files
* fixed detection of several things on modern openbsd systems
* added definitions of (u)int(8|16|32|64)_t for systems that don't have
them
* added randomnumber::getSeed() that uses /dev/urandom if available
* environment class prefers putenv to setenv to work around a memory
leak that can occur when using setenv to set an environment
variable over and over
* fixed 2 memory leaks in environment class
* fixed memrchr and strpbrk tests in configure script
* fixed a logger dependency on the permissions class in features.mk.in
* updated environment class to use malloc and free
* fixed reference-after-free by putenv in environment class
* applied patches from Renat Sabitov
* updated signalhandlers to have (void *)(int) signature
* added charstring::subString without an end parameter
* applied patch by Claudio Freire
* changed several %lf's to %Lf's in charstring long double parsers
* fixed uninitiaized nodename/nodevalue in xmldomnode
* fixed unterminated buffer after clear in stringbuffer
* removed "rebuild" target from all Makefiles
* added charstring::capitalize method
* made stringbuffer::terminate append a \0 unconditionally
* made stringbuffer::clear() terminate the buffer at position 0
* fixed a bug where xmldomnode::getFirstXXX() could crash if there was
no first XXX
* added xmldomnode::moveChild
* fixed uninitialized _grp in groupentry class
* regularexpression class uses pcre_free rather than delete to free
pcre_extra block now
* fixed printf %lld's in timezonefile class
* made several unsigned shorts use uint16_t in charstring class
* changed integerLength to return uint16_t rather than int
* added man page to rpm spec file
Changes in 0.32
* xmlsax does "sequential" and "only-once" hints when reading the file
* xmlsax/dom classes use optimal read and write buffers now
* added DESTDIR= to rudiments.pc.in
* added charstring::httpUnescape
* fixed a bug in datetime that would cause TZ to remain after doing a
timezone conversion if TZ was unset to begin with
* fixed a bug in regularexpression that could cause a double-free
0.31 - added OSSwapLittleToHost/OSSwapHostToLittle for Mac OS X
* modified environment::clear() for mac os x
* regularexpression wasn't setting the match count correctly, fixed that
* added charstring::subString() method
* added missing lingerOnClose(), fixed dontLingerOnClose()
* added base64 encode/decode methods
* fixed charstring::parseNumber() for unsigned int's
* added /opt/csw to configure script's search path
* fixed a memory leak in xmldom::unCacheString()
Changes in 0.30
* changed commandline::value() to commandline::getValue()
* fixed a memory leak in dictionary
* added setHour/Minute/Second/etc. methods to datetime
* fixed readdir_r vulnerability
* added support for either "-arg value" or "--arg=value" to commandline
* added support for break and control characters to chat class
* added print method to environment class
* added close-on-exec methods to filedescriptor class
* added clear method to environment class
* made all methods in environment class static
* added wrappers for strspn/strcspn/strpbrk functions to charstring class
* fixed bug where datetime would set wrong timezone if it is initialized
with a combined zone name like PST8PDT
* added directory::getChildCount()
* added datetime::validDateTime()
* xmldom class stores all strings found in the xml file in a stringlist
and stores pointers to them in the xmldomnodes to reduce
memory usage in xml files that have lots of duplicated strings
* added configure tests for dirfd/DIR.dd_fd/DIR.d_fd
* initialize addrinfo struct pointer to NULL in inetclientsocket.C
Rudiments is an Open Source C++ class library providing base classes
for things such as daemons, clients and servers, and wrapper classes
for the standard C functions for things such as regular expressions,
semaphores and signal handling.