The 0.51 release of rudiments is largely a clean-up release. Regressions, inconsistencies, and issues with specific compilers have been addressed. Work on support for OpenVMS has begun as well.
Full ChangeLog follows...
- added missing inline qualifiers to dynamicarray/staticarray method implementations
- added test for clock_settime, datetime class uses it if other set-time functions aren't available, returns false and sets errno=ENOSYS if no set-time function is available
- directory::fpathConf now falls back to MAX_PATH code if fpathconf exists but there's dirfd() or anything like it
- file::createFifo returns false and sets errno=ENOSYS on platforms that don't support fifo's now
- file::generateKey returns -1 and sets errno=ENOSYS on VMS now
- file::createHardLink returns -1 and sets errno=ENOSYS on platforms don't support hard links now
- fixed missing breaks in stdio::flush
- userentry::getPassword/getRealName return NULL on VMS now
- unix sockets are faked on VMS now
- threadmutex is built and installed now whether or not threads are supported, but if threads are not supported, its methods are degenerate and return success
- filesystem::getCurrentProperties() returns false and sets errno=ENOSYS on VMS now
- implemented degenerate groupentry for VMS
- fixed file::getBlockCount() crash that could occur if the filesystem's block size was reported as 0
- tweaked copy constructors and = operators in staticarray/dynamicarray classes to work with older compilers
- disabled -Werror for gcc < 2.7
- filedescriptor::printf uses fprintf or fdopen/vfprintf when possible, in leiu of falling back to charstring::printf
- charstring::printf tries the null device before falling back to a scratch file
- the rate at which charstring::printf expands its buffer is now exponential up to 1024 bytes
- added sys::getDirectorySeparator()
- fixed trailing-slash-followed-by-quote issue when building windows command lines
- added --enable-enosys-notify configure option for runtime notifcations when methods set ENOSYS
- cleared errno before each EINTR loop
- fixed sys::sync() segfault
- fixed ssl tests
- removed intervaltimer class
- updated sys::getPhysicalPageCount/getAvailablePhysicalPageCount for Windows
- added sys::getAllocationGranularity, updated code to use it instead of getPageSize, in most cases
- fixed copy-constructor/=-operator bugs in dynamicarray class
- added config_vs2013.h for VS 2013
- fixed several permissions-related issues for WinNT 4
- allowShortReads/useBlockingMode are set by default for stdinput now
- added wrapper for atexit()
- changed process::getRealUser/GroupId to getUser/GroupId to match setUser/Groupid
- added process::setEffectiveUser/Group methods
- fixed and documented auto-resume behavior in snooze methods
- fixed detection of double-dashed command line parameters without values
- removed redundant charstring::rightPad()
- renamed charstring::padString() to charstring::pad()
- added safePrint methods that take unsigned char arguments
- fixed bytestring::findFirst() with unsigned char needle, when needle is 0
- fixed bugs in linkedlist::moveBefore/moveAfter
- fixed bugs in singlylinkedlist::removeAll()
- removed arg parameter from thread::setFunction(), added thread::setArgument(), and added thread::create(arg)
- changed thread::create() to thread::run()
- wrote lots of example code and updated the programming docs
- removed unused shmfile class
- fixed several LocalFree's that should have been delete[]'s